Реагирование на действия флоу — iOS
Если вы создаёте флоу или пейволы с помощью Adapty Flow Builder или Paywall Builder, важно правильно настроить кнопки:
- Добавьте кнопку в Paywall Builder и назначьте ей готовое действие или создайте произвольный ID действия.
- Напишите код в приложении для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать пользовательские и готовые действия в коде.
Только закрытие флоу/пейвола и открытие URL обрабатываются автоматически. Все остальные действия кнопок требуют явной реализации в коде приложения.
Закрытие флоу и пейволов
Чтобы добавить кнопку для закрытия флоу или пейвола:
- В билдере добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
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):
- В билдере добавьте кнопку, назначьте ей действие Open URL и введите нужный URL.
- В коде приложения реализуйте обработчик действия
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 }
)Обработка пользовательских действий
Чтобы добавить кнопку для обработки произвольных действий:
- В билдере добавьте кнопку, назначьте ей действие Custom и задайте идентификатор.
- В коде приложения реализуйте обработчик для созданного идентификатора действия.
Например, если у вас есть другой набор предложений по подписке или разовых покупок, вы можете добавить кнопку, которая откроет другой флоу или пейвол:
.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, важно правильно настроить кнопки:
- Добавьте кнопку в Paywall Builder и назначьте ей существующее действие или создайте собственный ID действия.
- Напишите в приложении код для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать пользовательские и встроенные действия в коде.
Покупки, восстановление, закрытие пейвола и переходы по ссылкам обрабатываются автоматически. Все остальные действия кнопок требуют явной реализации в коде приложения.
Закрытие пейволов
Чтобы добавить кнопку закрытия пейвола:
- В Paywall Builder добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
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):
- В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и введите URL, который нужно открыть.
- В коде вашего приложения реализуйте обработчик действия
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
}
}Войти в приложение
Чтобы добавить кнопку входа в приложение:
- В Paywall Builder добавьте кнопку и назначьте ей действие Login.
- В коде приложения реализуйте обработчик действия
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)
}
}Обработка пользовательских действий
Чтобы добавить кнопку с произвольным действием:
- В Paywall Builder добавьте кнопку, назначьте ей действие Custom и задайте ID.
- В коде приложения реализуйте обработчик для созданного ID действия.
Например, если у вас есть другой набор предложений подписки или разовых покупок, можно добавить кнопку, которая откроет другой пейвол:
func paywallController(_ controller: AdaptyPaywallController,
didPerform action: AdaptyUI.Action) {
switch action {
case let .custom(id):
if id == "openNewPaywall" {
// Display another paywall
}
}
break
}
}