Реагирование на действия флоу — iOS

Если вы создаёте флоу или пейволы с помощью Adapty Flow Builder или Paywall Builder, важно правильно настроить кнопки:

  1. Добавьте кнопку в Paywall Builder и назначьте ей готовое действие или создайте произвольный ID действия.
  2. Напишите код в приложении для обработки каждого назначенного действия.

В этом гайде показано, как обрабатывать пользовательские и готовые действия в коде.

Только закрытие флоу/пейвола и открытие URL обрабатываются автоматически. Все остальные действия кнопок требуют явной реализации в коде приложения.

Закрытие флоу и пейволов

Чтобы добавить кнопку для закрытия флоу или пейвола:

  1. В билдере добавьте кнопку и назначьте ей действие Close.
  2. В коде приложения реализуйте обработчик действия close.

В iOS SDK действие close по умолчанию закрывает флоу или пейвол. При необходимости это поведение можно переопределить в коде. Например, закрытие одного флоу может вызывать открытие другого.

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case .close:
            flowPresented = false // dismiss the flow or paywall
        default:
            break
        }
    },
    didFailPurchase: { product, error in /* handle the error */ },
    didFinishRestore: { profile in /* check access level and dismiss */ },
    didFailRestore: { error in /* handle the error */ },
    didFailRendering: { error in flowPresented = false }
)

Открытие URL из флоу и пейволов

Если нужно добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент Link в билдере и обработайте его так же, как кнопки с действием Open URL.

Чтобы добавить кнопку, открывающую ссылку из флоу или пейвола (например, Terms of use или Privacy policy):

  1. В билдере добавьте кнопку, назначьте ей действие Open URL и введите нужный URL.
  2. В коде приложения реализуйте обработчик действия openURL, который открывает полученный URL в браузере.

В iOS SDK действие openURL по умолчанию открывает URL. При необходимости это поведение можно переопределить в коде.

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case let .openURL(url):
            UIApplication.shared.open(url, options: [:]) // default behavior
        default:
            break
        }
    },
    didFailPurchase: { product, error in /* handle the error */ },
    didFinishRestore: { profile in /* check access level and dismiss */ },
    didFailRestore: { error in /* handle the error */ },
    didFailRendering: { error in flowPresented = false }
)

Обработка пользовательских действий

Чтобы добавить кнопку для обработки произвольных действий:

  1. В билдере добавьте кнопку, назначьте ей действие Custom и задайте идентификатор.
  2. В коде приложения реализуйте обработчик для созданного идентификатора действия.

Например, если у вас есть другой набор предложений по подписке или разовых покупок, вы можете добавить кнопку, которая откроет другой флоу или пейвол:

.flow(
    isPresented: $flowPresented,
    flowConfiguration: flowConfiguration,
    didPerformAction: { action in
        switch action {
        case let .custom(id):
            if id == "openNewPaywall" {
                // Display another flow or paywall
            }
        default:
            break
        }
    },
    didFailPurchase: { product, error in /* handle the error */ },
    didFinishRestore: { profile in /* check access level and dismiss */ },
    didFailRestore: { error in /* handle the error */ },
    didFailRendering: { error in flowPresented = false }
)

Если вы создаёте пейволы с помощью Adapty Paywall Builder, важно правильно настроить кнопки:

  1. Добавьте кнопку в Paywall Builder и назначьте ей существующее действие или создайте собственный ID действия.
  2. Напишите в приложении код для обработки каждого назначенного действия.

В этом гайде показано, как обрабатывать пользовательские и встроенные действия в коде.

Покупки, восстановление, закрытие пейвола и переходы по ссылкам обрабатываются автоматически. Все остальные действия кнопок требуют явной реализации в коде приложения.

Закрытие пейволов

Чтобы добавить кнопку закрытия пейвола:

  1. В Paywall Builder добавьте кнопку и назначьте ей действие Close.
  2. В коде приложения реализуйте обработчик действия close, который закрывает пейвол.

В iOS SDK действие close по умолчанию закрывает пейвол. Однако при необходимости это поведение можно переопределить в коде. Например, закрытие одного пейвола может инициировать открытие другого.

func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case .close:
            controller.dismiss(animated: true) // поведение по умолчанию
            break
    }
}

Открытие URL с пейволов

Если вы хотите добавить группу ссылок (например, пользовательское соглашение и восстановление покупок), добавьте элемент Link в Paywall Builder и обработайте его так же, как кнопки с действием Open URL.

Чтобы добавить кнопку, открывающую ссылку с вашего пейвола (например, Terms of use или Privacy policy):

  1. В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и введите URL, который нужно открыть.
  2. В коде вашего приложения реализуйте обработчик действия openUrl, который открывает полученный URL в браузере.

В iOS SDK действие openUrl по умолчанию открывает URL. При необходимости это поведение можно переопределить в коде.

func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case let .openURL(url):
            UIApplication.shared.open(url, options: [:]) // default behavior
        break
    }
}

Войти в приложение

Чтобы добавить кнопку входа в приложение:

  1. В Paywall Builder добавьте кнопку и назначьте ей действие Login.
  2. В коде приложения реализуйте обработчик действия login, который идентифицирует пользователя.
func paywallController(_ controller: AdaptyPaywallController,
                      didPerform action: AdaptyUI.Action) {
   switch action {
       case .login:
           // Show a login screen
           let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController")
           controller.present(loginVC, animated: true)
   }
}

Обработка пользовательских действий

Чтобы добавить кнопку с произвольным действием:

  1. В Paywall Builder добавьте кнопку, назначьте ей действие Custom и задайте ID.
  2. В коде приложения реализуйте обработчик для созданного ID действия.

Например, если у вас есть другой набор предложений подписки или разовых покупок, можно добавить кнопку, которая откроет другой пейвол:

func paywallController(_ controller: AdaptyPaywallController,
                      didPerform action: AdaptyUI.Action) {
   switch action {
       case let .custom(id):
           if id == "openNewPaywall" {
              // Display another paywall
              }
           }
           break
   }
}