Действия
Панель 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 | Видео воспроизводится до конца | Video |
| Для элементов без встроенных взаимодействий (например, 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 во флоу, затем обработайте его в коде.
- Запустить внутреннее событие: Отправьте ID, например
viewed_special_offer, а затем залогируйте событие в аналитике при его получении. - Запросить системное разрешение: Отправьте ID, например
request_location, а затем вызовите системный диалог разрешения из приложения. Если разрешение нельзя выдать через диалог — откройте системные настройки телефона. Adapty не показывает диалог — это делает ваше приложение. - Запустить нативную аутентификацию: Отправьте ID, например
login_google, а затем откройте свой экран входа. Флоу не может авторизовать пользователя самостоятельно. - Применить бизнес-логику: Отправьте ID, например
apply_discount, а затем разблокируйте контент или измените состояние приложения на своей стороне. - Передать ответ на вопрос викторины в приложение: Назначьте разный Action ID каждому варианту ответа (например,
goal_weight_lossиgoal_muscle), а затем читайте ID в коде. Используйте его, чтобы задать пользовательский атрибут, по которому впоследствии можно строить сегменты. Поскольку действие передаёт только фиксированный ID, это единственный способ сообщить о выборе — флоу не может отправить выбранное значение.
Пользовательское действие срабатывает в момент выбора ответа. Если пользователь меняет ответ, флоу также отправляет новый Action ID. Ваше приложение получает оба сигнала по порядку — например, goal_weight_loss, затем goal_muscle. Сделайте обработчик идемпотентным, чтобы последний сигнал был приоритетным.
Что не могут делать пользовательские действия
Пользовательские действия статичны. Action ID фиксируется на этапе создания флоу — он не может читать переменные или пользовательский ввод. Когда действие срабатывает, приложение получает только этот ID, но не email, номер телефона или другие данные, которые ввёл пользователь. Поля ввода остаются внутри флоу в виде переменных для ветвления и персонализации. Чтобы использовать эти значения в приложении, собирайте их через собственный интерфейс или API. Пользовательские действия также работают в одностороннем порядке. Приложение не может вернуть результат во флоу, и флоу не ждёт завершения вашего кода. Если за пользовательским действием следует действие Navigate next, пользователь переходит на следующий экран даже если ваш код завершился ошибкой — например, когда пользователь закрыл экран входа, не авторизовавшись. В сочетании со статическим Action ID это исключает возможность валидации пользовательского ввода в приложении — например, проверки SMS-кода и разветвления флоу в зависимости от результата. Если дальнейший сценарий флоу зависит от того, что сделал ваш код, разделите флоу между двумя плейсментами.
Продолжение флоу в зависимости от результата
Если часть экранов должна появляться только после успешного выполнения кастомного действия — например, экраны после входа в аккаунт — разбейте флоу на два плейсмента и дайте приложению решать, когда показывать вторую часть:
- В первом плейсменте создайте флоу, который заканчивается кастомным действием (например,
login). - В приложении обработайте Action ID: покажите экран входа и проверьте, вошёл ли пользователь.
- Если пользователь вошёл, покажите флоу из второго плейсмента с продолжением экранов. Таким образом, ваше приложение управляет переходом на основе фактического результата, а не флоу, переходящего вперёд независимо от исхода.
Условные действия
Используйте условные действия, чтобы разветвлять флоу по разным путям в зависимости от данных пользователя.
Вот несколько распространённых сценариев:
- На экране есть квиз, и вы хотите направлять пользователей на разные экраны в зависимости от их ответов. В этом случае добавьте условное действие к кнопке.
- Вы хотите предлагать разные продукты и офферы разным группам пользователей. Разместите их на разных экранах и настройте условия для кнопки навигации.
- Вы хотите пропускать определённые шаги для пользователей, которые уже прошли туториал в предыдущей сессии. Условные действия работают как цепочка if / else-if / else. Приложение читает правила сверху вниз и останавливается на первом совпадении:
- IF: Флоу проверяет основное условие.
- Условие истинно? Флоу сразу выполняет действия из блока THEN и останавливается.
- Условие ложно? Флоу переходит к следующему разделу.
- ELSE IF: Здесь можно добавить дополнительные проверки (например, «Если не Premium, то является ли пользователь Trial?»).
- ELSE (Фолбэк): Если ни одно из правил выше не сработало, флоу выполняет действия из этого финального раздела.
- Если правило добавлено, но ему не назначено действие, совпадение с условием ни к чему не приводит.
- Незавершённое правило (без оператора или значения) блокирует предпросмотр и публикацию.
Для каждого правила выберите переменную для проверки и действие, которое нужно выполнить. Одному правилу можно назначить несколько действий.
Флоу выполняет только одно правило — первое, с которым совпало условие. Если нужно выполнить и IF, и ELSE IF одновременно, добавьте оба действия в IF.
Чтобы узнать, как сделать элементы выбираемыми и организовать их в группы для использования в условиях, см. Выбираемые элементы и группы.
Устранение неполадок
Любое действие с незаполненными обязательными полями блокирует предпросмотр и публикацию. Полный список см. в разделе Сохранение и публикация флоу.