Gestionar eventos de onboarding en el SDK de React Native

Los onboardings configurados con el builder generan eventos a los que tu app puede responder. La forma de gestionar estos eventos depende del enfoque de presentación que estés usando:

  • Presentación modal: Requiere configurar manejadores de eventos que gestionen los eventos de todas las vistas de onboarding
  • Componente React: Gestiona los eventos mediante parámetros de callback directamente en el widget

Antes de empezar, asegúrate de que:

  1. Has instalado el SDK de Adapty para React Native 3.8.0 o posterior.
  2. Has creado un onboarding.
  3. Has añadido el onboarding a un placement.

Para controlar o monitorizar los procesos que ocurren en la pantalla de onboarding dentro de tu app, implementa los manejadores de eventos:

Tipos de eventos

Las siguientes secciones describen los distintos tipos de eventos que puedes manejar, independientemente del enfoque de presentación que estés usando.

Gestionar acciones personalizadas

En el builder, puedes añadir una acción custom a un botón y asignarle un ID.

ios-events-1.webp

Luego, puedes usar este ID en tu código y gestionarlo como una acción personalizada. Por ejemplo, si el usuario pulsa un botón personalizado, como Login o Allow notifications, el manejador de eventos se activará con el parámetro actionId que coincide con el Action ID del builder. Puedes crear tus propios IDs, como “allowNotifications”.

Ejemplo de evento (haz clic para expandir)
{
  "actionId": "allow_notifications",
  "meta": {
    "onboardingId": "onboarding_123",
    "screenClientId": "profile_screen",
    "screenIndex": 0,
    "screensTotal": 3
  }
}

Finalizar la carga del onboarding

Cuando un onboarding termina de cargarse, se dispara este evento:

Ejemplo de evento (haz clic para expandir)
{
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "welcome_screen",
        "screen_index": 0,
        "total_screens": 4
    }
}

Cerrar el onboarding

El onboarding se considera cerrado cuando el usuario pulsa un botón con la acción Close asignada.

ios-events-2.webp

Ten en cuenta que debes gestionar qué ocurre cuando el usuario cierra el onboarding. Por ejemplo, debes dejar de mostrar el propio onboarding.

Ejemplo de evento (haz clic para expandir)
{
  "action_id": "close_button",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "final_screen",
    "screen_index": 3,
    "total_screens": 4
  }
}

Abrir un paywall

Maneja este evento para abrir un paywall si quieres abrirlo dentro del onboarding. Si quieres abrir un paywall después de cerrarlo, hay una forma más directa de hacerlo: maneja la acción de cierre y abre el paywall sin depender de los datos del evento.

La manera más sencilla de trabajar con paywalls en onboardings es hacer que el ID de la acción sea igual al ID del placement del paywall.

Ejemplo de evento (Haz clic para expandir)
{
    "action_id": "premium_offer_1",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "pricing_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

Seguimiento de la navegación

Recibirás un evento de análisis cuando se produzcan distintos eventos relacionados con la navegación durante el flow de onboarding:

El objeto event puede ser uno de los siguientes tipos:

TipoDescripción
onboardingStartedCuando el onboarding se ha cargado
screenPresentedCuando se muestra cualquier pantalla
screenCompletedCuando se completa una pantalla. Incluye un elementId opcional (identificador del elemento completado) y un reply opcional (respuesta del usuario). Se activa cuando el usuario realiza cualquier acción para salir de la pantalla.
secondScreenPresentedCuando se muestra la segunda pantalla
userEmailCollectedSe activa cuando se recoge el email del usuario mediante el campo de entrada
onboardingCompletedSe activa cuando un usuario llega a una pantalla con el ID final. Si necesitas este evento, asigna el ID final a la última pantalla.
unknownPara cualquier tipo de evento no reconocido. Incluye name (el nombre del evento desconocido) y meta (metadatos adicionales)
Cada evento incluye información meta con los siguientes campos:
CampoDescripción
onboardingIdIdentificador único del flow de onboarding
screenClientIdIdentificador de la pantalla actual
screenIndexPosición de la pantalla actual en el flow
screensTotalNúmero total de pantallas en el flow
Ejemplos de eventos (haz clic para expandir)
// 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
    }
}