Действия
Панель Interactions позволяет задать, как элементы флоу реагируют на события — например, нажатия, появление элементов и отправку форм. Для каждого события назначается одно или несколько действий: переход между экранами, показ или скрытие элементов, открытие URL, установка переменных и многое другое. Используйте условия, чтобы адаптировать флоу под данные конкретного пользователя.
Каждое взаимодействие строится по трёхчастной цепочке:
- Element: Компонент экрана, с которого начинается взаимодействие — кнопка, вариант ответа в квизе, поле ввода или любой другой элемент.
- Trigger: Событие, которое запускает логику, — нажатие, появление элемента или отправка формы.
- Action: Задача, которую выполняет флоу в ответ на событие. Один триггер может последовательно запускать несколько действий.
Настройка взаимодействий
Чтобы настроить взаимодействие:
- Выберите элемент на экране или на панели Layers.
- Справа переключитесь на панель Interactions и нажмите Add trigger.
- В разделе Button triggers выберите тип триггера.
- Нажмите Add action, кликните на название действия и выберите тип действия из выпадающего списка в окне Edit action.
- Настройте свойства действия в зависимости от выбранного типа действия.
- При необходимости нажмите Add action, чтобы добавить дополнительные действия для того же триггера.
Типы триггеров
Триггеры срабатывают в ответ на действия пользователя, изменение состояния элементов или загрузку экрана. On screen appear является универсальным; остальные привязаны к конкретным элементам.
| Триггер | Срабатывает когда… | Поддерживается на |
|---|---|---|
| On screen appear | Экран загружается | Все элементы |
| On tap | Пользователь нажимает на элемент | Кнопки, варианты квиза, переключатели, таймеры обратного отсчёта, видео |
| On changed | Пользователь изменяет значение поля ввода (набирает текст, выбирает дату или время) | Все элементы ввода |
| On submit | Пользователь отправляет текстовый ввод, нажав Enter или Done на клавиатуре | Текстовые поля ввода |
| On timer end | Элемент Countdown достигает нуля | Countdown |
| On playback finished | Видео воспроизводится до конца | Видео |
| Для элементов без встроенных взаимодействий (например, Loader) единственным доступным триггером является On screen appear. |
Типы действий
Любое навигационное действие, которое переводит пользователя на другой экран, всегда должно быть последним в списке действий. Действия, добавленные после него (например, «Set Variable»), могут не выполниться, так как приложение уже сменило экран.
Перейти на экран
Это основное действие для перемещения пользователей между экранами. Оно переводит пользователя на указанный экран назначения.
Для этого действия нужно только указать экран назначения. Если вы хотите включить динамическую навигацию, см. Навигация и ветвление или раздел Условные действия.
Перейти к следующему экрану
Переводит пользователя на следующий экран в порядке экранов флоу. Используйте это для линейных флоу, где порядок экранов в редакторе соответствует тому порядку, в котором вы хотите показывать их пользователям.
Возврат назад
Возвращает пользователя на предыдущий экран в истории навигации, а не на предыдущий экран в последовательности.
Открыть URL
Используйте встроенные ссылки для вставки ссылок в текст.
Открывает указанный веб-адрес. Используйте это действие, чтобы отправить пользователей на веб-страницы, статьи или профили в социальных сетях за пределами нативных экранов вашего приложения. Для этого действия можно настроить два параметра:
- URL address: укажите URL-адрес. Кроме того, его можно сделать динамическим — например, чтобы направлять пользователей на разные страницы в зависимости от их ответа в квизе или введённых данных. Для этого нажмите
и выберите нужную переменную. - Open in external browser: укажите, где открывать внешние ссылки. По умолчанию они открываются во встроенном браузере, чтобы пользователь оставался в приложении. Установите флажок Open in external browser, если хотите открывать ссылки во внешнем браузере.
Закрыть флоу
Закрывает текущий флоу.
Показ/скрытие элементов
Показывает или скрывает определённый элемент на экране.
Это действие переопределяет начальное состояние, заданное в Visibility в панели Design. Если для Visibility установлено значение Hide, действие Show сделает элемент видимым.
Действие Show или Hide без указанного целевого элемента блокирует предпросмотр и публикацию. Выберите цель или удалите действие.
Показать уведомление
Отображает нативное системное всплывающее окно. Пользователь должен нажать Ok, чтобы продолжить.
Для уведомлений необходимо заполнить поля Title и Message. В обоих полях можно использовать переменные, чтобы сделать содержимое динамическим. Для этого нажмите
и выберите нужную переменную.
Действие Show alert с пустой или незаполненной конфигурацией блокирует предпросмотр и публикацию. Заполните оба поля или удалите это действие.
Установить переменную
Обновляет значение переменной во флоу. Перед добавлением этого действия создайте переменные на панели Variables слева (см. Переменные).
Нажмите Add variable и задайте столько переменных и их значений, сколько нужно.
Действие Set variable без назначения блокирует предпросмотр и публикацию. Настройте хотя бы одно назначение или удалите это действие.
Покупка
Запускает флоу покупки прямо из кнопки или взаимодействия в онбординге. Используйте это, чтобы пользователи могли оформить подписку или купить продукт, не выходя из флоу. Для этого действия можно настроить два варианта поведения:
- In-app store: Инициирует нативную покупку. Укажите в поле Product конкретный продукт или
products.selectedProductдля текущего выбора пользователя на экране. - Web payment: Перенаправляет пользователя на веб-пейвол вместо инициирования нативной покупки. Используйте этот вариант, если хотите обрабатывать транзакцию вне приложения — например, для веб-офферов подписки.
Действие Purchase без указанного Product или Web Paywall URL блокирует предварительный просмотр и публикацию. Укажите цель или удалите это действие.
Восстановление покупок
Запускает флоу восстановления покупок на устройстве. Пользователи нажимают эту кнопку, если ранее оформили подписку на другом устройстве или после переустановки приложения и хотят восстановить доступ к своим правам.
Настраивать здесь ничего не нужно — Adapty выполняет восстановление через нативный флоу стора.
Действие Restore purchases также предварительно настроено на ссылке Restore в пресете кнопки Links (см. Настройка покупок).
Пользовательские действия
Пользовательское действие генерирует именованный Action ID, который обрабатывается вашим кодом. Используйте его, когда встроенные типы действий не покрывают нужную функциональность.
Adapty передаёт триггер, а ваше приложение реализует поведение:
- В билдере вы назначаете Action ID для взаимодействия с элементом.
- Когда пользователь запускает это взаимодействие, флоу передаёт ID в ваше приложение.
- Ваше приложение сопоставляет ID и выполняет нужный код.
Настройте пользовательское действие
- В окне Edit action укажите Action ID — строку, которую распознает ваше приложение (например,
show_discount). - В коде приложения реализуйте обработчик для этого Action ID. Подробности и примеры кода см. в разделе Обработка действий пейвола.
Действие типа Custom без Action ID блокирует предпросмотр и публикацию. Укажите Action ID или удалите это действие.
Возможности пользовательских действий
Само по себе пользовательское действие ничего не делает. Вы задаёте статический Action ID в конструкторе, а код приложения определяет, что произойдёт при получении этого идентификатора. Все примеры ниже работают по одной схеме: назначьте ID во флоу, а затем обработайте его в коде.
- Запустить внутреннее событие: отправьте идентификатор, например
viewed_special_offer, затем залогируйте событие в аналитику при его получении. - Запросить системное разрешение: отправьте идентификатор, например
request_location, затем вызовите системный диалог запроса разрешений из своего приложения. Adapty не показывает этот диалог — это делает ваше приложение. - Запустить нативную аутентификацию: отправьте идентификатор, например
login_google, затем откройте собственный экран входа. Флоу не может авторизовать пользователя самостоятельно. - Применить бизнес-логику: отправьте идентификатор, например
apply_discount, затем разблокируйте контент или измените состояние приложения на своей стороне. - Передать ответ из квиза в приложение: назначьте разный Action ID каждому варианту ответа (например,
goal_weight_lossиgoal_muscle), затем считайте идентификатор в коде. Используйте его, чтобы задать пользовательский атрибут, по которому впоследствии можно сегментировать пользователей. Поскольку действие передаёт только фиксированный идентификатор, это единственный способ сообщить о сделанном выборе — флоу не может отправить выбранное значение напрямую.
Кастомное действие срабатывает в момент выбора пользователем варианта. Если пользователь меняет ответ, флоу также отправляет новый Action ID. Ваше приложение получит оба сигнала по порядку — например, goal_weight_loss, затем goal_muscle. Сделайте обработчик идемпотентным, чтобы побеждал последний сигнал.
Что не умеют пользовательские действия
Пользовательские действия статичны. Action ID фиксируется при сборке флоу — он не может читать переменные или пользовательский ввод. Когда действие срабатывает, приложение получает только этот ID, но никак не email, номер телефона или другие данные, введённые пользователем. Поля ввода остаются внутри флоу как переменные для ветвления и персонализации. Чтобы использовать эти значения в приложении, собирайте их через собственный UI или API.
Условные действия
Используйте условные действия, чтобы разделить флоу на разные пути в зависимости от данных пользователя.
Примеры распространённых сценариев:
- На экране есть квиз, и вы хотите направлять пользователей на разные экраны в зависимости от их ответов. В этом случае добавьте условное действие к кнопке.
- Вы хотите предлагать разные продукты и офферы разным группам пользователей. Разместите их на отдельных экранах и настройте условия для кнопки навигации.
- Вы хотите пропускать определённые шаги для пользователей, которые уже прошли обучение в предыдущей сессии. Условные действия работают как цепочка if / else-if / else. Приложение читает правила сверху вниз и останавливается на первом совпадении:
- IF: Флоу проверяет основное условие.
- Результат True? Флоу немедленно выполняет действия THEN и останавливается.
- Результат False? Флоу переходит к следующему разделу.
- ELSE IF: Здесь можно добавить дополнительные проверки (например, «Если не Premium, является ли пользователь участником Trial?»).
- ELSE (Фолбэк): Если ни одно из правил выше не совпало, флоу выполняет действия в этом финальном разделе.
- Если правило добавлено, но действие для него не назначено, совпадение с условием ни к чему не приводит.
- Незаполненное правило (без оператора или значения) блокирует предпросмотр и публикацию.
Для каждого правила выберите переменную для оценки и действие для выполнения. Можно задать несколько действий для одного правила.
Флоу выполняет только одно правило — первое совпавшее. Если нужно выполнить и IF, и ELSE IF одновременно, добавьте оба действия в IF.
Чтобы узнать, как сделать элементы выбираемыми и объединять их в группы для использования в условиях, см. Выбираемые элементы и группы.
Устранение неполадок
Любое действие с незаполненными обязательными полями блокирует предпросмотр и публикацию. Полный список см. в разделе Сохранение и публикация флоу.