Documentation Index
Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
Use this file to discover all available pages before exploring further.
Descripción general
Este tutorial te muestra cómo crear un carrusel de onboarding de múltiples pasos usando un único Mensaje In-App HTML. A diferencia de los carruseles tradicionales que dependen de gestos de deslizamiento, este enfoque usa navegación por botones y mantiene todos los pasos dentro de un solo mensaje. Lo que construirás:- Un flujo de onboarding de dos pasos con imágenes, texto y botones
- Navegación por botones (toca “Siguiente” para avanzar, toca “Comenzar” para cerrar)
- Puntos indicadores de progreso
- Transiciones suaves de desvanecimiento entre pasos

- Guiar a los usuarios a través de un flujo corto de onboarding o educación (2-5 pasos)
- Requerir que los usuarios toquen explícitamente un botón para continuar (sin gestos de deslizamiento)
- Mantener todo dentro de un único Mensaje In-App HTML para simplificar
- Cerrar el mensaje automáticamente cuando el flujo se complete
Esta guía usa un Mensaje In-App HTML para control total. También puedes construir flujos de onboarding basados en tarjetas con el editor de arrastrar y soltar—esas tarjetas son deslizables pero ofrecen menos personalización.
Requisitos previos
Antes de comenzar, asegúrate de tener:- Una aplicación OneSignal activa con Mensajes In-App habilitados
- Permiso para crear o editar Mensajes In-App HTML
- Mobile SDK instalado en tu aplicación móvil
- Comprensión básica de HTML, CSS y JavaScript
Cómo funciona el flujo de múltiples pasos
Antes de profundizar en el código, es importante entender el enfoque técnico. Esta implementación usa un único Mensaje In-App HTML que cambia entre pasos mostrando y ocultando contenido, no cargando múltiples mensajes separados. La arquitectura se basa en cuatro componentes principales:Contenedores de tarjeta para cada paso
Cada paso está envuelto en un
<div> con la clase card y un ID único:- Todas las tarjetas existen simultáneamente en el DOM
- Solo una tarjeta es visible a la vez (controlada por la clase
active)
Control de visibilidad con CSS
CSS maneja la lógica de mostrar/ocultar usando opacidad y eventos de puntero:Por qué esto importa:
opacity: 0oculta la tarjeta visualmente pero la mantiene en el diseñopointer-events: nonepreviene clics accidentales en tarjetas ocultastransitioncrea efectos suaves de desvanecimiento
Gestión de estado con JavaScript
La función Esta función:
setActive(i) controla qué tarjeta es visible:- Elimina
activede todas las tarjetas - Agrega
activea la tarjeta objetivo - Actualiza los puntos indicadores de progreso
Información clave: Este es un patrón de aplicación de página única (SPA) dentro de un Mensaje In-App. Todo el contenido se carga una vez, y JavaScript gestiona los cambios de estado sin recargar.
Paso 1: Crear un nuevo Mensaje In-App HTML
- En el panel de OneSignal, ve a Messages → In-App Messages
- Haz clic en New In-App Message
- Selecciona HTML como tipo de mensaje
- Elige un diseño Full Screen o Large (recomendado para onboarding para maximizar el impacto visual)
- Continúa al editor HTML
La vista previa del editor HTML puede no reflejar completamente el comportamiento en tiempo de ejecución. Siempre prueba en un dispositivo real o usuario de prueba para verificar animaciones, comportamiento de botones y la acción de cierre.
Paso 2: Agregar la plantilla HTML
Reemplaza el contenido del editor con la plantilla a continuación. Esta plantilla incluye:- Código autocontenido: Todo el HTML, CSS y JavaScript en un archivo
- Navegación por botones: Sin gestos de deslizamiento (más confiable en diferentes dispositivos)
- Transiciones de desvanecimiento: Cambios suaves de opacidad entre pasos
- Integración con SDK de OneSignal: Usa
OneSignalIamApi.close(e)para cerrar el mensaje - Optimizado para móvil: Diseño responsive con meta tag de viewport
Ver plantilla HTML completa
Ver plantilla HTML completa
Paso 3: Personalizar tu contenido
Seguro para personalizar
Puedes modificar estos elementos sin romper la funcionalidad: Contenido:- Texto del título en etiquetas
<h1> - Texto del cuerpo en etiquetas
<p> - Etiquetas de botones (
Siguiente,Comenzar) - URLs de imágenes en los estilos
background-image: url('...')
- Colores: Cambia el fondo de
.btn, color de texto o colores de puntos - Espaciado: Ajusta padding y márgenes
- Tipografía: Modifica font-family, font-size, font-weight
- Radio de borde: Actualiza valores de
border-radiuspara botones e imágenes
Agregar más pasos
Para agregar un tercer paso, sigue este patrón:- Agregar la tarjeta HTML:
- Agregar un punto de progreso:
- Actualizar la función
setActive():
- Actualizar el ID del botón del paso anterior:
Cambia
id="done"aid="next-1"en el botón de la tarjeta 1, luego agrega un listener de clic:
- Agregar el botón de cierre a la nueva última tarjeta (card-2):
Paso 4: Probar el Mensaje In-App
Lista de verificación de pruebas
- Guarda el mensaje en el panel de OneSignal
- Configura los ajustes de entrega:
- Establece condiciones de activación (ej., inicio de sesión, vista de página específica)
- Elige tu audiencia objetivo o selecciona un usuario de prueba
- Envía a un dispositivo de prueba:
- Usa Usuarios de prueba para previsualizar sin afectar usuarios de producción
- Instala tu app en un dispositivo físico (recomendado sobre simuladores para comportamiento preciso)
- Verifica la funcionalidad:
- ✓ La primera tarjeta aparece con contenido correcto
- ✓ El botón “Siguiente” avanza a la tarjeta 2
- ✓ Los puntos de progreso se actualizan correctamente
- ✓ Las transiciones de desvanecimiento son suaves
- ✓ El botón “Comenzar” cierra el mensaje
- ✓ El mensaje no reaparece inmediatamente (verifica configuración de límite de frecuencia)
Los simuladores/emuladores pueden no reflejar con precisión el comportamiento del dispositivo real, especialmente para interacciones táctiles e integraciones de SDK. Siempre prueba en dispositivos físicos antes de lanzar a producción.
Solución de problemas comunes
| Problema | Causa probable | Solución |
|---|---|---|
| El mensaje no aparece | Condiciones de activación no cumplidas | Verifica los Disparadores de Mensajes In-App y confirma que tu usuario de prueba cumple los criterios |
| Los botones no funcionan | Errores de JavaScript o IDs no coinciden | Revisa la consola del navegador por errores; verifica que los IDs de botones coincidan con los IDs de listeners |
| Las imágenes no cargan | Problemas de CORS o URLs inválidas | Usa URLs HTTPS; prueba las URLs de imágenes en un navegador primero |
| El mensaje aparece pero no se cierra | SDK de OneSignal no cargado | Verifica que la configuración del Mobile SDK esté completa |
Próximos pasos
Rastrear engagement de usuarios:- Agrega seguimiento de clics usando atributos
data-onesignal-unique-label(ya incluidos en la plantilla) para medir abandono entre pasos - Ve las analíticas de clics en Messages → In-App Messages → [Tu mensaje] → Analytics
- Etiqueta usuarios que completen el onboarding (ej.,
onboarding_completed: true) - Usa etiquetas para segmentar usuarios y prevenir que se muestre nuevamente el flujo de onboarding
- Agrega datos de usuario para personalizar contenido en mensajes futuros
- Deep link a usuarios a una pantalla específica después del cierre
- Usa sintaxis Liquid para personalizar títulos con nombres de usuario o atributos
- Implementa pruebas A/B con diferentes flujos de onboarding para optimizar tasas de finalización