Реакция на действия кнопок в Flutter SDK
Если вы создаёте флоу или пейволы с помощью конструктора Adapty, важно правильно настроить кнопки:
- Добавьте кнопку в Builder и назначьте ей существующее действие или создайте пользовательский идентификатор действия.
- Напишите код в приложении для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать пользовательские и встроенные действия в коде.
Закрытие экрана и открытие URL обрабатываются автоматически стандартной реализацией flowViewDidPerformAction, а SDK самостоятельно обрабатывает покупки и восстановления. Все остальные действия кнопок, такие как вход в систему или открытие другого флоу, требуют реализации соответствующей логики в коде приложения. Обратите внимание, что реагирование на завершённые покупки и восстановления происходит в обязательных коллбэках наблюдателя — см. Обработка событий флоу и пейвола.
Закрытие флоу и пейволов
Чтобы добавить кнопку закрытия флоу или пейвола, в билдере добавьте кнопку и назначьте ей действие Close. Код писать не нужно: стандартная реализация flowViewDidPerformAction автоматически закрывает экран при получении CloseAction.
Системная кнопка Back на Android больше не закрывает экран по умолчанию. Она передаётся в flowViewDidPerformAction как AndroidSystemBackAction — обработайте её самостоятельно, если хотите, чтобы кнопка «Назад» закрывала флоу или пейвол.
Переопределите flowViewDidPerformAction, если вам нужна кастомная логика — например, чтобы закрывать экран также по системной кнопке «Назад» на Android, как в v3:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
case const AndroidSystemBackAction():
view.dismiss();
break;
case OpenUrlAction(:final url, :final openIn):
AdaptyUI().openUrl(url, openIn: openIn);
break;
default:
break;
}
}Переопределение flowViewDidPerformAction полностью заменяет реализацию по умолчанию — сохраните обработку CloseAction и OpenUrlAction, если хотите сохранить стандартное поведение закрытия и открытия URL.
Открытие URL из флоу и пейволов
Если вы хотите добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент Link в конструкторе и обработайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку (например, Terms of use или Privacy policy), добавьте кнопку в конструкторе, назначьте ей действие Open URL и укажите нужный URL.
Никакой дополнительной реализации не требуется: стандартная реализация flowViewDidPerformAction открывает URL нативно через AdaptyUI().openUrl, учитывая настройку внутреннего или внешнего браузера из дашборда.
Стандартного поведения достаточно в большинстве случаев. Если вы всё же хотите открывать URL самостоятельно, переопределите обработчик:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
view.dismiss();
break;
case OpenUrlAction(url: final url):
// Open the URL in whatever way fits your app
break;
default:
break;
}
}Вход в приложение
Чтобы добавить кнопку для входа пользователей в приложение:
- В билдере добавьте кнопку и назначьте ей действие Login.
- В коде приложения реализуйте обработчик для действия
login, который идентифицирует пользователя.
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'login'):
// Navigate to your login screen in whatever way fits your app
break;
default:
break;
}
}Обработка пользовательских действий
Чтобы добавить кнопку с произвольным действием:
- В конструкторе добавьте кнопку, назначьте ей действие Custom и задайте ID.
- В коде приложения реализуйте обработчик для этого ID действия.
Например, если у вас есть другой набор предложений по подпискам или разовые покупки, можно добавить кнопку, которая откроет другой флоу или пейвол:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'openNewPaywall'):
// Display another flow or paywall
break;
default:
break;
}
}Если вы создаёте пейволы с помощью Adapty Paywall Builder, важно правильно настроить кнопки:
- Добавьте кнопку в Paywall Builder и назначьте ей существующее действие или создайте пользовательский ID действия.
- Напишите код в приложении для обработки каждого назначенного действия. В этом гайде показано, как обрабатывать пользовательские и встроенные действия в вашем коде.
Только покупки и восстановления обрабатываются автоматически. Все остальные действия кнопок, например закрытие пейволов или открытие ссылок, требуют реализации соответствующей обработки в коде приложения.
Закрытие пейвола
Чтобы добавить кнопку закрытия пейвола:
- В Paywall Builder добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик для действий
CloseActionиAndroidSystemBackAction.
В Flutter SDK действия CloseAction и AndroidSystemBackAction по умолчанию закрывают пейвол. Однако при необходимости вы можете переопределить это поведение в коде. Например, закрытие одного пейвола может запускать открытие другого.
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
case const AndroidSystemBackAction():
view.dismiss();
break;
default:
break;
}
}Открытие URL с пейволов
Если вы хотите добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент Link в Paywall Builder и обработайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку с вашего пейвола (например, Terms of use или Privacy policy):
- В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и введите URL, который нужно открыть.
- В коде вашего приложения реализуйте обработчик действия
openUrl, который открывает полученный URL в браузере.
// You have to install url_launcher plugin in order to handle urls:
// https://pub.dev/packages/url_launcher
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case OpenUrlAction(url: final url):
final Uri uri = Uri.parse(url);
launchUrl(uri, mode: LaunchMode.inAppBrowserView);
break;
default:
break;
}
}Вход в приложение
Чтобы добавить кнопку для входа пользователей в приложение:
- В Paywall Builder добавьте кнопку и назначьте ей действие Login.
- В коде приложения реализуйте обработчик действия
login, который идентифицирует пользователя.
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'login'):
// Navigate to your login screen in whatever way fits your app
break;
default:
break;
}
}Обработка пользовательских действий
Чтобы добавить кнопку, обрабатывающую любые другие действия:
- В Paywall Builder добавьте кнопку, назначьте ей действие Custom и задайте идентификатор.
- В коде приложения реализуйте обработчик для созданного идентификатора действия.
Например, если у вас есть другой набор предложений подписок или разовых покупок, можно добавить кнопку, которая будет открывать другой пейвол:
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'openNewPaywall'):
// Показать другой пейвол
break;
default:
break;
}
}