Aperçu
Ce tutoriel vous montre comment créer un carrousel d’onboarding multi-étapes en utilisant un seul Message In-App HTML. Contrairement aux carrousels traditionnels qui reposent sur des gestes de balayage, cette approche utilise une navigation par boutons et garde toutes les étapes dans un seul message. Ce que vous allez construire :- Un flux d’onboarding en deux étapes avec images, texte et boutons
- Navigation par boutons (appuyez sur « Suivant » pour avancer, appuyez sur « Commencer » pour fermer)
- Points indicateurs de progression
- Transitions en fondu fluides entre les étapes

- Guider les utilisateurs à travers un court flux d’onboarding ou d’éducation (2-5 étapes)
- Exiger que les utilisateurs appuient explicitement sur un bouton pour continuer (pas de gestes de balayage)
- Garder tout dans un seul Message In-App HTML pour simplifier
- Fermer automatiquement le message lorsque le flux est terminé
Ce guide utilise un Message In-App HTML pour un contrôle total. Vous pouvez également créer des flux d’onboarding basés sur des cartes avec l’éditeur glisser-déposer—ces cartes sont balayables mais offrent moins de personnalisation.
Prérequis
Avant de commencer, assurez-vous d’avoir :- Une application OneSignal active avec les Messages In-App activés
- La permission de créer ou modifier des Messages In-App HTML
- Le Mobile SDK installé dans votre application mobile
- Une compréhension de base du HTML, CSS et JavaScript
Comment fonctionne le flux multi-étapes
Avant de plonger dans le code, il est important de comprendre l’approche technique. Cette implémentation utilise un seul Message In-App HTML qui bascule entre les étapes en affichant et masquant le contenu, sans charger plusieurs messages séparés. L’architecture repose sur quatre composants principaux :Conteneurs de carte pour chaque étape
Chaque étape est enveloppée dans un
<div> avec la classe card et un ID unique :- Toutes les cartes existent simultanément dans le DOM
- Une seule carte est visible à la fois (contrôlée par la classe
active)
Contrôle de visibilité CSS
Le CSS gère la logique d’affichage/masquage en utilisant l’opacité et les événements de pointeur :Pourquoi c’est important :
opacity: 0cache la carte visuellement mais la garde dans la mise en pagepointer-events: noneempêche les clics accidentels sur les cartes cachéestransitioncrée des effets de fondu fluides
Gestion d'état JavaScript
La fonction Cette fonction :
setActive(i) contrôle quelle carte est visible :- Supprime
activede toutes les cartes - Ajoute
activeà la carte cible - Met à jour les points indicateurs de progression
Point clé : C’est un modèle d’application monopage (SPA) au sein d’un Message In-App. Tout le contenu est chargé une fois, et JavaScript gère les changements d’état sans rechargement.
Étape 1 : Créer un nouveau Message In-App HTML
- Dans le tableau de bord OneSignal, allez dans Messages → In-App Messages
- Cliquez sur New In-App Message
- Sélectionnez HTML comme type de message
- Choisissez une mise en page Full Screen ou Large (recommandé pour l’onboarding pour maximiser l’impact visuel)
- Continuez vers l’éditeur HTML
L’aperçu de l’éditeur HTML peut ne pas refléter entièrement le comportement à l’exécution. Testez toujours sur un appareil réel ou un utilisateur test pour vérifier les animations, le comportement des boutons et l’action de fermeture.
Étape 2 : Ajouter le modèle HTML
Remplacez le contenu de l’éditeur par le modèle ci-dessous. Ce modèle comprend :- Code autonome : Tout le HTML, CSS et JavaScript dans un seul fichier
- Navigation par boutons : Pas de gestes de balayage (plus fiable sur différents appareils)
- Transitions en fondu : Changements d’opacité fluides entre les étapes
- Intégration SDK OneSignal : Utilise
OneSignalIamApi.close(e)pour fermer le message - Optimisé pour mobile : Mise en page responsive avec balise meta viewport
Voir le modèle HTML complet
Voir le modèle HTML complet
Étape 3 : Personnaliser votre contenu
Sûr à personnaliser
Vous pouvez modifier ces éléments sans casser la fonctionnalité : Contenu :- Texte du titre dans les balises
<h1> - Texte du corps dans les balises
<p> - Libellés des boutons (
Suivant,Commencer) - URLs d’images dans les styles
background-image: url('...')
- Couleurs : Changez l’arrière-plan de
.btn, la couleur du texte ou les couleurs des points - Espacement : Ajustez le padding et les marges
- Typographie : Modifiez font-family, font-size, font-weight
- Rayon de bordure : Mettez à jour les valeurs
border-radiuspour les boutons et images
Ajouter plus d’étapes
Pour ajouter une troisième étape, suivez ce modèle :- Ajouter la carte HTML :
- Ajouter un point de progression :
- Mettre à jour la fonction
setActive():
- Mettre à jour l’ID du bouton de l’étape précédente :
Changez
id="done"enid="next-1"sur le bouton de la carte 1, puis ajoutez un écouteur de clic :
- Ajouter le bouton de fermeture à la nouvelle dernière carte (card-2) :
Étape 4 : Tester le Message In-App
Liste de vérification des tests
- Enregistrez le message dans le tableau de bord OneSignal
- Configurez les paramètres de livraison :
- Définissez les conditions de déclenchement (ex., début de session, vue de page spécifique)
- Choisissez votre audience cible ou sélectionnez un utilisateur test
- Envoyez à un appareil de test :
- Utilisez les Utilisateurs test pour prévisualiser sans affecter les utilisateurs de production
- Installez votre application sur un appareil physique (recommandé plutôt que les simulateurs pour un comportement précis)
- Vérifiez la fonctionnalité :
- ✓ La première carte apparaît avec le bon contenu
- ✓ Le bouton « Suivant » avance à la carte 2
- ✓ Les points de progression se mettent à jour correctement
- ✓ Les transitions en fondu sont fluides
- ✓ Le bouton « Commencer » ferme le message
- ✓ Le message ne réapparaît pas immédiatement (vérifiez les paramètres de limitation de fréquence)
Les simulateurs/émulateurs peuvent ne pas refléter précisément le comportement de l’appareil réel, en particulier pour les interactions tactiles et les intégrations SDK. Testez toujours sur des appareils physiques avant de lancer en production.
Dépannage des problèmes courants
| Problème | Cause probable | Solution |
|---|---|---|
| Le message n’apparaît pas | Conditions de déclenchement non remplies | Vérifiez les Déclencheurs de Messages In-App et confirmez que votre utilisateur test remplit les critères |
| Les boutons ne fonctionnent pas | Erreurs JavaScript ou IDs non correspondants | Vérifiez la console du navigateur pour les erreurs ; vérifiez que les IDs des boutons correspondent aux IDs des écouteurs |
| Les images ne se chargent pas | Problèmes CORS ou URLs invalides | Utilisez des URLs HTTPS ; testez d’abord les URLs d’images dans un navigateur |
| Le message apparaît mais ne se ferme pas | SDK OneSignal non chargé | Vérifiez que la configuration du Mobile SDK est complète |
Prochaines étapes
Suivre l’engagement des utilisateurs :- Ajoutez le suivi des clics en utilisant les attributs
data-onesignal-unique-label(déjà inclus dans le modèle) pour mesurer l’abandon entre les étapes - Consultez les analyses de clics dans Messages → In-App Messages → [Votre message] → Analytics
- Taguez les utilisateurs qui terminent l’onboarding (ex.,
onboarding_completed: true) - Utilisez les tags pour segmenter les utilisateurs et éviter de remontrer le flux d’onboarding
- Ajoutez des données utilisateur pour personnaliser le contenu des futurs messages
- Lien profond vers un écran spécifique après la fermeture
- Utilisez la syntaxe Liquid pour personnaliser les titres avec les noms d’utilisateurs ou attributs
- Implémentez des tests A/B avec différents flux d’onboarding pour optimiser les taux de complétion