Отслеживание просмотров экранов флоу в Flutter SDK

Каждый раз, когда пользователь открывает экран в флоу, SDK отправляет в ваше приложение событие flow_screen_showed. Передавайте его в Amplitude, Mixpanel или любую другую продуктовую аналитику, которую вы используете, чтобы анализировать экраны флоу вместе с остальными событиями приложения.

Tip

Чтобы узнать, как далеко пользователи проходят флоу, код не нужен — метрики флоу уже показывают просмотры, завершения и отток по каждому экрану в дашборде Adapty. Используйте этот гайд, когда нужны те же данные в вашей собственной аналитике, объединённые с событиями, о которых Adapty не знает.

Прежде чем начать

Вам потребуется:

  • Adapty Flutter SDK v4 или выше: колбэк аналитики флоу отсутствует в более ранних версиях.
  • Версия флоу, опубликованная после появления этой функции: Adapty генерирует события экранов при публикации флоу, поэтому флоу, опубликованный до появления функции, не отправляет никаких событий. Если события не поступают в приложение, опубликуйте новую версию флоу и попробуйте снова.

Что вы получаете

Флоу отправляет событие flow_screen_showed каждый раз, когда пользователь открывает один из его экранов. Adapty учитывает эти события в собственной аналитике флоу и также передаёт их в ваше приложение, чтобы вы могли построить такую же воронку в своей аналитике.

ПараметрОписание
instanceIdИдентификатор экрана, который открыл пользователь.
screen_orderПорядковый номер экрана во флоу.
is_last_screentrue, если у экрана нет следующего шага. Флоу с ветвлением может завершаться на нескольких разных экранах — каждый из них возвращает true.

Оба поля isBackendEvent и isCustomerEvent равны true для этого события: Adapty продолжает его учитывать, и ваше приложение тоже его получает.

Просмотры экранов попадают в тот же callback аналитики, что и все остальные события флоу. Подробнее о регистрации обработчика — в разделе Обработка событий флоу и пейвола.

Передавайте каждый просмотр экрана в аналитику

Сначала проверьте имя события, прежде чем читать остальные данные, — флоу передаёт другие события через тот же колбэк.

void flowViewDidReceiveAnalyticEvent(
  AdaptyUIFlowView view,
  String name,
  Map<String, dynamic> params,
) {
  if (name != 'flow_screen_showed') return;

  final screenId = params['instanceId'];
  final screenOrder = params['screen_order'];

  // Send screenId and screenOrder to your analytics provider here.
}

Запуск кода при достижении последнего экрана

is_last_screen равен true на экране, дальше которого флоу не может продвинуться. Используйте это, чтобы разблокировать контент, отметить онбординг как завершённый или отправить собственное событие завершения — без добавления действия кнопки в билдере.

void flowViewDidReceiveAnalyticEvent(
  AdaptyUIFlowView view,
  String name,
  Map<String, dynamic> params,
) {
  if (name != 'flow_screen_showed') return;
  if (params['is_last_screen'] != true) return;

  // The user reached the end of the flow.
}

Достижение последнего экрана не означает закрытие флоу. Пользователь может увидеть финальный экран и закрыть флоу, не совершив никаких действий, а в ветвящемся флоу может быть несколько конечных экранов. Чтобы отследить момент, когда флоу исчезает, используйте flowViewDidDisappear.