Обработка событий онбординга в React Native SDK

Перед началом убедитесь, что:

Онбординги, настроенные с помощью билдера, генерируют события, на которые может реагировать ваше приложение. Способ обработки этих событий зависит от выбранного подхода к отображению:

  • Модальное представление: требует настройки обработчиков событий, которые обрабатывают события для всех представлений онбординга
  • React-компонент: обрабатывает события через встроенные параметры колбэков непосредственно в виджете
  1. Вы установили Adapty React Native SDK версии 3.8.0 или выше.
  2. Вы создали онбординг.
  3. Вы добавили онбординг в плейсмент.

Чтобы управлять процессами на экране онбординга в вашем мобильном приложении и отслеживать их, реализуйте обработчики событий:

Типы событий

В следующих разделах описаны различные типы событий, которые можно обрабатывать вне зависимости от используемого подхода к отображению.

Обработка пользовательских действий

В конструкторе можно добавить действие custom к кнопке и задать ему идентификатор.

ios-events-1.webp

Затем этот ID можно использовать в коде и обрабатывать его как пользовательское действие. Например, если пользователь нажимает кастомную кнопку — Login или Allow notifications — обработчик события сработает с параметром actionId, соответствующим Action ID из билдера. Вы можете задавать собственные ID, например "allowNotifications".

Пример события (нажмите, чтобы развернуть)
{
  "actionId": "allow_notifications",
  "meta": {
    "onboardingId": "onboarding_123",
    "screenClientId": "profile_screen",
    "screenIndex": 0,
    "screensTotal": 3
  }
}

Завершение загрузки онбординга

Когда онбординг завершает загрузку, срабатывает следующее событие:

Пример события (нажмите, чтобы развернуть)
{
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "welcome_screen",
        "screen_index": 0,
        "total_screens": 4
    }
}

Закрытие онбординга

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

ios-events-2.webp

Обратите внимание, что вам нужно самостоятельно обработать ситуацию, когда пользователь закрывает онбординг. Например, необходимо прекратить его отображение.

Пример события (нажмите, чтобы развернуть)
{
  "action_id": "close_button",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "final_screen",
    "screen_index": 3,
    "total_screens": 4
  }
}

Открытие пейвола

Обрабатывайте это событие, если хотите открыть пейвол внутри онбординга. Если нужно открыть пейвол после его закрытия, есть более простой способ — обработайте действие закрытия и откройте пейвол, не опираясь на данные события.

Когда пользователь нажимает кнопку, открывающую пейвол, вы получите ID действия кнопки, который вы задали вручную. Наиболее удобный подход — сделать ID действия равным ID плейсмента пейвола.

Пример события (нажмите, чтобы развернуть)
{
    "action_id": "premium_offer_1",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "pricing_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

Отслеживание навигации

Вы получаете аналитическое событие при различных событиях, связанных с навигацией во время онбординга:

Объект event может быть одного из следующих типов:

ТипОписание
onboardingStartedКогда онбординг загружен
screenPresentedКогда отображается любой экран
screenCompletedКогда экран завершён. Включает необязательный elementId (идентификатор завершённого элемента) и необязательный reply (ответ пользователя). Срабатывает, когда пользователь выполняет любое действие для выхода с экрана.
secondScreenPresentedКогда отображается второй экран
userEmailCollectedСрабатывает, когда email пользователя собирается через поле ввода
onboardingCompletedСрабатывает, когда пользователь достигает экрана с идентификатором final. Если вам нужно это событие, присвойте идентификатор final последнему экрану.
unknownДля любого нераспознанного типа события. Включает name (название неизвестного события) и meta (дополнительные метаданные)
Каждое событие содержит информацию meta со следующими полями:
ПолеОписание
onboardingIdУникальный идентификатор онбординга
screenClientIdИдентификатор текущего экрана
screenIndexПозиция текущего экрана в потоке
screensTotalОбщее количество экранов в потоке
Примеры событий (нажмите, чтобы развернуть)
// onboardingStarted
{
  "name": "onboarding_started",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "welcome_screen",
    "screen_index": 0,
    "total_screens": 4
  }
}

// screenPresented
{
    "name": "screen_presented",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "interests_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

// screenCompleted
{
    "name": "screen_completed",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    },
    "params": {
        "element_id": "profile_form",
        "reply": "success"
    }
}

// secondScreenPresented
{
    "name": "second_screen_presented",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    }
}

// userEmailCollected
{
    "name": "user_email_collected",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    }
}

// onboardingCompleted
{
    "name": "onboarding_completed",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "final_screen",
        "screen_index": 3,
        "total_screens": 4
    }
}