Manejar eventos de onboarding en React Native SDK

Los onboardings configurados con el builder generan eventos a los que tu app puede responder. La forma de manejarlos 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: Maneja los eventos mediante parámetros de callback en línea directamente en el widget

Antes de empezar, asegúrate de que:

  1. Tienes instalado el SDK de React Native de Adapty versión 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 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.

Manejar acciones personalizadas

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

ios-events-1.webp

Después, puedes usar ese ID en tu código y manejarlo como una acción personalizada. Por ejemplo, si un usuario pulsa un botón personalizado como Login o Allow notifications, el manejador de eventos se disparará 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
  }
}

Finalización de 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, necesitas 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 prefieres abrirlo después de que se cierre, hay una forma más directa: maneja la acción de cierre y abre el paywall sin depender de los datos del evento.

Si el usuario pulsa un botón que abre un paywall, recibirás el ID de acción del botón que configuraste manualmente. La forma más sencilla de trabajar con paywalls en onboardings es hacer que el ID de acción coincida con el 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

Recibes un evento de análisis cuando se producen distintos eventos relacionados con la navegación durante el flujo del onboarding:

El objeto event puede ser uno de los siguientes tipos:

TipoDescripción
onboardingStartedCuando el onboarding ha terminado de cargarse
screenPresentedCuando se muestra cualquier pantalla
screenCompletedCuando se completa una pantalla. Incluye elementId opcional (identificador del elemento completado) y reply opcional (respuesta del usuario). Se dispara cuando el usuario realiza cualquier acción para salir de la pantalla.
secondScreenPresentedCuando se muestra la segunda pantalla
userEmailCollectedSe dispara cuando se recoge el correo electrónico del usuario mediante el campo de entrada
onboardingCompletedSe dispara cuando el 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 flujo de onboarding
screenClientIdIdentificador de la pantalla actual
screenIndexPosición de la pantalla actual en el flujo
screensTotalNúmero total de pantallas en el flujo
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
    }
}