Реагирование на действия флоу - Capacitor
Если вы создаёте флоу или пейволы с помощью Flow Builder или Paywall Builder от Adapty, важно правильно настроить кнопки:
- Добавьте кнопку в конструкторе и назначьте ей готовое действие или создайте собственный идентификатор действия.
- Напишите код в приложении для обработки каждого из назначенных действий.
В этом гайде показано, как обрабатывать пользовательские и готовые действия в коде.
Покупки, восстановления, закрытие флоу и пейволов, а также открытие URL обрабатываются автоматически. Вы можете настроить их поведение по умолчанию или реализовать реакцию на пользовательские действия.
Установка обработчика события полностью заменяет его поведение по умолчанию. Обработчики, которые вы не задаёте, сохраняют поведение по умолчанию.
Закрытие флоу и пейволов
Чтобы добавить кнопку закрытия флоу или пейвола:
- В конструкторе добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
close, который закрывает флоу или пейвол.
В Capacitor SDK действие close по умолчанию закрывает флоу или пейвол. Однако при необходимости вы можете переопределить это поведение в своём коде. Например, закрытие одного флоу может инициировать открытие другого.
const view = await createFlowView(flow);
const unsubscribe = await view.setEventHandlers({
onCloseButtonPress() {
return true; // allow the flow to close
},
});На Android системная кнопка Back и жест «назад» вызывают отдельное событие onAndroidSystemBack. В SDK v4 оно больше не закрывает флоу по умолчанию. Верните true из обработчика, если хотите, чтобы кнопка Back закрывала флоу:
const unsubscribe = await view.setEventHandlers({
onAndroidSystemBack() {
return true; // close the flow when the Back button is pressed
},
});Открытие URL из флоу и пейволов
Если вы хотите добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент Link в билдере и обрабатывайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку из флоу или пейвола (например, Terms of use или Privacy policy):
- В билдере добавьте кнопку, назначьте ей действие Open URL и введите нужный URL.
- При необходимости в коде приложения реализуйте обработчик действия
openUrl, который откроет полученный URL нужным вам способом.
В Capacitor SDK нажатие на URL по умолчанию открывает его в нативном браузере: SDK вызывает adapty.openWebUrl({ url, openIn }), учитывая параметр Open in, заданный в билдере, и оставляет флоу открытым. При необходимости вы можете переопределить это поведение в своём коде.
const unsubscribe = await view.setEventHandlers({
onUrlPress(url) {
// Open the URL your own way, e.g. with the Capacitor Browser plugin
Browser.open({ url });
return false; // keep the flow open
},
});Обработка пользовательских действий
Чтобы добавить кнопку, обрабатывающую произвольные действия:
- В билдере добавьте кнопку, назначьте ей действие Custom и задайте идентификатор.
- В коде приложения реализуйте обработчик для созданного идентификатора действия.
Например, если у вас есть другой набор предложений по подписке или разовые покупки, можно добавить кнопку, которая будет открывать другой флоу или пейвол:
const unsubscribe = await view.setEventHandlers({
onCustomAction(actionId) {
if (actionId === 'openNewPaywall') {
// Display another flow or paywall
}
},
});Если вы создаёте пейволы с помощью Adapty Paywall Builder, важно правильно настроить кнопки:
- Добавьте кнопку в Paywall Builder и назначьте ей готовое действие или создайте собственный ID действия.
- Напишите код в приложении для обработки каждого назначенного действия.
В этом гайде показано, как обрабатывать пользовательские и готовые действия в коде.
Закрытие пейволов
Чтобы добавить кнопку закрытия пейвола:
- В Paywall Builder добавьте кнопку и назначьте ей действие Close.
- В коде приложения реализуйте обработчик действия
close, который закрывает пейвол.
В Capacitor SDK действие close по умолчанию закрывает пейвол. Однако при необходимости вы можете переопределить это поведение в своём коде. Например, закрытие одного пейвола может инициировать открытие другого.
const view = await createPaywallView(paywall);
const unsubscribe = view.setEventHandlers({
onCloseButtonPress() {
console.log('User closed paywall');
return true; // Allow the paywall to close
}
});Открытие URL из пейволов
Если нужно добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент Link в Paywall Builder и обрабатывайте его так же, как кнопки с действием Open URL.
Чтобы добавить кнопку, открывающую ссылку из пейвола (например, Terms of use или Privacy policy):
- В Paywall Builder добавьте кнопку, назначьте ей действие Open URL и укажите нужный URL.
- В коде приложения реализуйте обработчик действия
openUrl, который открывает полученный URL в браузере.
В Capacitor SDK действие window.open по умолчанию открывает URL. При необходимости вы можете переопределить это поведение в своём коде.
const view = await createPaywallView(paywall);
const unsubscribe = view.setEventHandlers({
onUrlPress(url) {
window.open(url, '_blank');
return false; // Don't close the paywall
},
});Вход в приложение
Чтобы добавить кнопку для входа пользователей в ваше приложение:
- В Paywall Builder добавьте кнопку и назначьте ей действие Login.
- В коде приложения реализуйте обработчик действия
login, который идентифицирует пользователя.
const view = await createPaywallView(paywall);
const unsubscribe = view.setEventHandlers({
onCustomAction(actionId) {
if (actionId === 'login') {
// Navigate to login screen
console.log('User requested login');
}
}
});Обработка пользовательских действий
Чтобы добавить кнопку, которая обрабатывает любые другие действия:
- В Paywall Builder добавьте кнопку, назначьте ей действие Custom и задайте ей ID.
- В коде приложения реализуйте обработчик для созданного вами ID действия.
Например, если у вас есть другой набор предложений по подписке или разовые покупки, вы можете добавить кнопку, которая будет отображать другой пейвол:
const unsubscribe = view.setEventHandlers({
onCustomAction(actionId) {
if (actionId === 'openNewPaywall') {
// Display another paywall
}
},
});