Реагирование на действия флоу - Unity
Если вы создаёте флоу или пейволы с помощью Flow Builder или Paywall Builder от Adapty, важно правильно настроить кнопки:
- Добавьте кнопку в билдере и назначьте ей готовое действие или создайте свой идентификатор действия.
- Напишите код в приложении для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать кастомные и готовые действия в коде.
Покупки и восстановления обрабатываются автоматически. Все остальные действия кнопок — закрытие флоу, открытие ссылок и т. д. — требуют реализации обработчика в коде приложения.
Настройте слушатель событий флоу
Чтобы обрабатывать действия флоу, реализуйте интерфейс IAdaptyFlowsEventsListener и зарегистрируйте его с помощью Adapty.SetFlowsEventsListener(). Это следует сделать на раннем этапе жизненного цикла приложения — как правило, в главной сцене или при инициализации приложения.
using AdaptySDK;
public class FlowsListener : MonoBehaviour, IAdaptyFlowsEventsListener
{
void Start()
{
Adapty.SetFlowsEventsListener(this);
}
// implement all IAdaptyFlowsEventsListener methods here
}IAdaptyFlowsEventsListener — это C# интерфейс, поэтому реализуйте все его методы — полный список см. в разделе Обработка событий флоу и пейвола. В примерах ниже показан только метод FlowViewDidPerformAction.
Все действия с кнопками поступают в коллбэк FlowViewDidPerformAction(view, action) в виде объекта AdaptyUIUserAction с Type равным Close, SystemBack, OpenUrl или Custom, а также необязательным полем Value (URL или идентификатор пользовательского действия).
Закрытие флоу и пейволов
Чтобы добавить кнопку закрытия флоу или пейвола:
- В билдере добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
Close, который закрывает флоу.
Закрытое представление уничтожается и не может быть показано повторно. Чтобы отобразить флоу ещё раз, вызовите CreateFlowView снова.
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Обработка системной кнопки «Назад» на Android
Нажатие системной кнопки «Назад» на Android (или использование жеста «назад») генерирует действие типа SystemBack. Само по себе оно не закрывает флоу — флоу остаётся открытым, и пользователь выходит из него через путь, который вы определяете: например, кнопку Close или действие on_device_back в билдере. Если вы хотите, чтобы системная кнопка «Назад» закрывала флоу, обработайте это действие самостоятельно:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
case AdaptyUIUserActionType.SystemBack:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Открытие URL из флоу и пейволов
Если вы хотите добавить группу ссылок (например, пользовательское соглашение и восстановление покупок), добавьте элемент Link в билдере и обрабатывайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку из флоу или пейвола (например, Terms of use или Privacy policy):
- В билдере добавьте кнопку, назначьте ей действие Open URL и введите нужный URL.
- В коде приложения реализуйте обработчик действия
OpenUrl, который открывает полученный URL.
Use the AdaptyUI.OpenUrl method to open the URL natively, honoring the external or in-app browser option (action.OpenIn) configured in the builder:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.OpenUrl:
var urlString = action.Value;
if (!string.IsNullOrWhiteSpace(urlString)) {
AdaptyUI.OpenUrl(
urlString,
action.OpenIn ?? AdaptyWebPresentation.ExternalBrowser,
(error) => {
// handle the error
}
);
}
break;
default:
// handle other events
break;
}
}Войдите в приложение
Чтобы добавить кнопку, которая авторизует пользователей в вашем приложении:
- В конструкторе добавьте кнопку и назначьте ей действие Custom с ID
login. - В коде приложения реализуйте обработчик кастомного действия
login, который идентифицирует пользователя.
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "login") {
// Navigate to login scene
SceneManager.LoadScene("LoginScene");
}
break;
default:
// handle other events
break;
}
}Обработка пользовательских действий
Чтобы добавить кнопку для обработки произвольных действий:
- В конструкторе добавьте кнопку, назначьте ей действие Custom и задайте ID.
- В коде приложения реализуйте обработчик для созданного вами ID действия.
Например, если у вас есть другой набор предложений по подписке или разовые покупки, вы можете добавить кнопку, которая откроет другой флоу или пейвол:
public void FlowViewDidPerformAction(
AdaptyUIFlowView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "openNewFlow") {
// Display another flow or paywall
ShowAlternativeFlow();
}
break;
default:
// handle other events
break;
}
}
private void ShowAlternativeFlow() {
// Implement your logic to show an alternative flow
}Если вы создаёте пейволы с помощью Adapty Paywall Builder, важно правильно настроить кнопки:
- Добавьте кнопку в Paywall Builder и назначьте ей готовое действие или создайте собственный ID действия.
- Напишите в приложении код для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать в коде как пользовательские, так и готовые действия.
Покупки и восстановления обрабатываются автоматически. Все остальные действия кнопок — закрытие пейволов, открытие ссылок и т. д. — требуют реализации обработчиков в коде приложения.
Закрытие пейволов
Чтобы добавить кнопку, закрывающую пейвол:
- В Paywall Builder добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
close, который скрывает пейвол.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Close:
view.Dismiss(null);
break;
default:
// handle other events
break;
}
}Открытие URL из пейволов
Если вы хотите добавить группу ссылок (например, пользовательское соглашение и восстановление покупок), добавьте элемент Link в Paywall Builder и обработайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку из пейвола (например, Terms of use или Privacy policy):
- В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и введите нужный URL.
- В коде приложения реализуйте обработчик действия
openUrl, который открывает полученный URL в браузере.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.OpenUrl:
var urlString = action.Value;
if(!string.IsNullOrWhiteSpace(urlString)) {
Application.OpenURL(urlString);
}
break;
default:
// handle other events
break;
}
}Вход в приложение
Чтобы добавить кнопку, которая выполняет вход пользователя в приложение:
- В Paywall Builder добавьте кнопку и назначьте ей действие Custom с ID
login. - В коде приложения реализуйте обработчик пользовательского действия
login, который идентифицирует пользователя.
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "login") {
// Navigate to login scene
SceneManager.LoadScene("LoginScene");
}
break;
default:
// handle other events
break;
}
}Обработка пользовательских действий
Чтобы добавить кнопку для обработки любых других действий:
- В Paywall Builder добавьте кнопку, назначьте ей действие Custom и задайте ID.
- В коде приложения реализуйте обработчик созданного ID действия.
Например, если у вас есть другой набор предложений по подпискам или разовых покупок, можно добавить кнопку, которая будет отображать другой пейвол:
public void PaywallViewDidPerformAction(
AdaptyUIPaywallView view,
AdaptyUIUserAction action
) {
switch (action.Type) {
case AdaptyUIUserActionType.Custom:
if (action.Value == "openNewPaywall") {
// Display another paywall
ShowAlternativePaywall();
}
break;
default:
// handle other events
break;
}
}
private void ShowAlternativePaywall() {
// Implement your logic to show alternative paywall
}