Обработка действий кнопок в Flutter SDK

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

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

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

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

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

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

  1. В Paywall Builder добавьте кнопку и назначьте ей действие Close.
  2. В коде приложения реализуйте обработчик для действий 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):

  1. В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и укажите нужный URL.
  2. В коде приложения реализуйте обработчик действия openUrl, который открывает полученный URL в браузере.
// You have to install url_launcher plugin in order to handle urls:
// https://pub.dev/packages/url_launcher

void paywallViewDidPerformAction(AdaptyUIView view, AdaptyUIAction action) {
    switch (action) {
      case OpenUrlAction(url: final url):
        final Uri uri = Uri.parse(url);
        launchUrl(uri, mode: LaunchMode.inAppBrowserView);
        break;
      default:
        break;
    }
}

Авторизация в приложении

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

  1. В Paywall Builder добавьте кнопку и назначьте ей действие Login.
  2. В коде приложения реализуйте обработчик действия login, который идентифицирует пользователя.
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
    switch (action) {
      case CustomAction(action: 'login'):
        // Handle login action
        Navigator.of(context).push(MaterialPageRoute(builder: (context) => LoginScreen()));
        break;
      default:
        break;
    }
}

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

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

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

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

void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
   switch (action) {
     case CustomAction(action: 'openNewPaywall'):
       // Display another paywall
       break;
     default:
       break;
   }
}