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

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

Tip

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

Перед началом работы

Вам понадобится:

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

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

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

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

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

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

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

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

func flowController(
    _ controller: AdaptyFlowController,
    didReceiveAnalyticEvent name: String,
    params: [String: any Sendable]
) {
    guard name == "flow_screen_showed" else { return }

    let screenId = params["instanceId"] as? String
    let screenOrder = params["screen_order"] as? Int

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

Запустите код, когда пользователь дошёл до конца

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

func flowController(
    _ controller: AdaptyFlowController,
    didReceiveAnalyticEvent name: String,
    params: [String: any Sendable]
) {
    guard name == "flow_screen_showed",
          params["is_last_screen"] as? Bool == true
    else { return }

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

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