Обработка действий флоу - Android

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

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

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

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

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
    when (action) {
        AdaptyUI.Action.Close -> (context as? Activity)?.onBackPressed() // default behavior
    }
}

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

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {    
       is AdaptyUI.Action.OpenUrl -> {
           val intent = Intent(Intent.ACTION_VIEW, Uri.parse(action.url)) // default behavior
           context.startActivity(intent)
       }
   }
}

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       is AdaptyUI.Action.Custom -> {
           if (action.customId == "openNewPaywall") {
               // Display another flow or paywall
           }
       }
   }
}

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

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

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

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

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
    when (action) {
        AdaptyUI.Action.Close -> (context as? Activity)?.onBackPressed() // default behavior
    }
}

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

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {    
       is AdaptyUI.Action.OpenUrl -> {
           val intent = Intent(Intent.ACTION_VIEW, Uri.parse(action.url)) // default behavior
           context.startActivity(intent)
       }
   }
}

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

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

  1. В Paywall Builder добавьте кнопку и назначьте ей действие Login.
  2. В коде приложения реализуйте обработчик действия login, который идентифицирует пользователя.
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       AdaptyUI.Action.Login -> {
           val intent = Intent(context, LoginActivity::class.java)
           context.startActivity(intent)
       }
   }
}

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

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

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

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

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       is AdaptyUI.Action.Custom -> {
           if (action.customId == "openNewPaywall") {
               // Display another paywall
           }
       }
   }
}