Реакция на действия кнопок в Flutter SDK

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

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

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

Закрытие экрана и открытие 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;
    }
}

Вход в приложение

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

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

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

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

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

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

void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
   switch (action) {
     case CustomAction(action: 'openNewPaywall'):
       // Display another flow or paywall
       break;
     default:
       break;
   }
}

Если вы создаёте пейволы с помощью Adapty 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(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;
    }
}

Вход в приложение

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

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

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

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

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

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

void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
   switch (action) {
     case CustomAction(action: 'openNewPaywall'):
       // Показать другой пейвол
       break;
     default:
       break;
   }
}