Configuration et débogage
Vous devrez peut-être envelopper vos appels OneSignal dansOneSignalDeferred.push(async function (OneSignal) { ... }) (utilisez function (OneSignal) { ... } lorsque vous n’avez pas besoin de await). L’argument OneSignal est l’instance du SDK utilisée tout au long de cette référence (par exemple await OneSignal.init({ ... })).
Vous pouvez pousser plusieurs callbacks, ou placer plusieurs instructions dans un seul callback.
Le SDK OneSignal est chargé avec l’attribut defer sur votre page. Par exemple :
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
Ainsi, le SDK s’exécute après l’analyse du document et ne bloque pas le rendu. Les scripts qui s’exécutent plus tôt ont tout de même besoin d’un endroit où mettre en file d’attente le travail jusqu’à ce que le SDK soit prêt. Commencez par :
window.OneSignalDeferred = window.OneSignalDeferred || [];
Cette ligne définit OneSignalDeferred si elle est absente. Si un extrait antérieur de la page l’a déjà définie, la même référence est conservée ; sinon, elle commence comme un tableau vide [] sur lequel vous poussez des callbacks.
Les tableaux exposent une méthode .push(), donc vous mettez des fonctions en file d’attente avec OneSignalDeferred.push(...). Lorsque le SDK se charge, il vide la file d’attente et redéfinit .push() de sorte que les pushs ultérieurs s’exécutent immédiatement (voir le code source du SDK Web).
La plupart des extraits ci-dessous utilisent
OneSignal seul. Considérez-le comme l’instance de votre callback différé après await OneSignal.init({ ... }), sauf indication contraire dans une section (par exemple setConsentRequired() avant init).init()
Initialise le SDK OneSignal. Ceci devrait être appelé dans la balise <head> une fois sur chaque page de votre site. Le ONESIGNAL_APP_ID peut être trouvé dans Clés et ID.
Si vous souhaitez retarder l’initialisation du SDK OneSignal, nous recommandons d’utiliser nos méthodes de confidentialité.
Paramètres promptOptions
Utilisez promptOptions pour localiser ou personnaliser les invites d’autorisation utilisateur. Tous les champs sont optionnels.
Structure : promptOptions.slidedown.prompts est un tableau ; chaque élément est une configuration d’invite. Les champs type, autoPrompt, delay, text et categories appartiennent à chaque objet à l’intérieur de prompts, et non comme des clés de premier niveau à côté de appId dans init.
Paramètres notifyButton
Configurez la cloche d’abonnement (bouton de notification) affichée sur la page.
Paramètres welcomeNotification
Personnalisez la notification de bienvenue envoyée après le premier abonnement.
Exemple :
setLogLevel()
Configure la journalisation pour afficher des logs supplémentaires dans la console. Consultez Étapes de dépannage pour plus de détails. Exécutez depuis un callback différé après init (même instance OneSignal qu’ailleurs).
JavaScript
'trace''debug''info''warn''error'
Identité et propriétés de l’utilisateur
Lorsque les utilisateurs s’abonnent aux notifications push sur votre site web, OneSignal crée automatiquement un OneSignal ID (ID de niveau utilisateur) et un Subscription ID (ID de niveau appareil). Vous pouvez associer plusieurs abonnements (par exemple, appareils, emails, numéros de téléphone) à un seul utilisateur en appelantlogin() avec votre identifiant utilisateur unique.
Consultez Utilisateurs et Abonnements pour plus de détails.
login(external_id)
Définit le contexte utilisateur actuel sur l’external_id fourni. Cela lie l’appareil actuel (abonnement push web) à un utilisateur connu et unifie toutes les données futures sous un seul onesignal_id. Utilisez cette méthode uniquement pour les utilisateurs identifiés (par exemple, après une connexion ou une restauration de compte). Pour les utilisateurs anonymes, n’appelez pas login. Suivez-les plutôt à l’aide de leur onesignal_id attribué automatiquement (voir OneSignal.User.onesignalId).
Ce qui se passe lorsque vous appelez login(external_id)
Le SDK se comporte différemment selon que l’external_id existe déjà ou non dans l’application OneSignal.
Si l’external_id existe déjà :
- Le SDK bascule vers cet utilisateur existant.
- Vous pouvez voir un
409 Conflictdans le journal réseau ou la console du navigateur. Cela signifie que l’External ID existe déjà dans l’application ; c’est attendu dans ce cas et il ne s’agit généralement pas d’un rejet de promesse que vous devez gérer.
- Vous pouvez voir un
- Le
onesignal_idactuel est abandonné et leonesignal_idexistant de cet utilisateur est chargé. - L’appareil actuel (abonnement push web) est lié à l’utilisateur existant.
- Les données anonymes collectées avant la connexion ne sont pas fusionnées et sont supprimées. Cela inclut les tags, les données de session, les abonnements email/SMS et les autres propriétés utilisateur locales.
external_id n’existe pas :
- Un nouvel utilisateur est créé avec le
onesignal_idactuel. - Toutes les données collectées lorsque l’utilisateur était anonyme sont conservées.
- L’appareil (abonnement push web) devient lié à ce nouvel utilisateur.
- Le SDK réessaie automatiquement la requête de connexion en cas d’échecs réseau ou d’erreurs serveur.
- Vous n’avez pas besoin d’implémenter votre propre logique de réessai.
- Appelez
login(external_id)à chaque chargement de page une fois que vous connaissez l’ID de l’utilisateur (par exemple, après la connexion ou la restauration de session). - Appelez-la à nouveau chaque fois que l’utilisateur connecté change (changement de compte).
- N’appelez pas
loginavant de disposer d’un identifiant utilisateur stable et connu.
JavaScript
logout()
Dissocie l’utilisateur actuel de l’abonnement push web.
- Supprime l’
external_idde l’abonnement push web actuel. Ne supprime pas l’external_iddes autres abonnements. - Réinitialise le
onesignal_idvers un nouvel utilisateur anonyme. - Toutes les nouvelles données (par exemple tags, abonnements, données de session, etc.) seront désormais définies sur le nouvel utilisateur anonyme jusqu’à ce qu’il soit identifié avec la méthode
login.
Utilisez ceci lorsqu’un utilisateur se déconnecte de votre site et que vous ne souhaitez plus envoyer de messages transactionnels ciblés à ce navigateur.
JavaScript
OneSignal.User.onesignalId
Récupère le onesignal_id de l’utilisateur actuel stocké localement dans le navigateur. Cette valeur représente le contexte utilisateur actif (l’User ID de OneSignal) et peut changer au fil du temps — par exemple, lorsque vous appelez login(external_id) ou lorsque le SDK s’initialise. Si elle est appelée trop tôt, cette méthode peut renvoyer null.
Cette valeur n’est pas le Subscription ID, qui sert à identifier le navigateur, c’est-à-dire l’abonnement push web (voir User.PushSubscription.id).
Quand le onesignal_id est disponible :
- Après que le SDK OneSignal a terminé son initialisation
- Après qu’un utilisateur est identifié avec
login(external_id) - Après un changement d’utilisateur ou une restauration de session
addEventListener('change', …) au lieu de faire du polling.
Cas d’utilisation courants :
Dans la plupart des cas, vous voudrez utiliser votre propre External ID défini via la méthode login. Cependant, il existe des cas où vous pourriez vouloir utiliser le onesignal_id directement.
- Suivre les utilisateurs anonymes avant qu’un External ID ne soit défini
- Stocker le OneSignal ID dans votre backend pour le support ou le débogage
- Corréler les utilisateurs OneSignal avec les journaux internes
- Afficher l’ID pour le dépannage ou l’assurance qualité
JavaScript
OneSignal.User.externalId
Récupère l’External ID de l’utilisateur actuel enregistré localement dans le navigateur. Peut être null si non défini via la méthode login ou si appelé avant l’initialisation de l’état utilisateur. Utilisez plutôt User State addEventListener('change', …) pour écouter les changements d’état utilisateur.
JavaScript
addEventListener() État utilisateur
Écoute les changements dans le contexte utilisateur (par exemple, connexion, déconnexion, attribution d’ID).
JavaScript
addAlias(), addAliases(), removeAlias(), removeAliases()
Les alias sont des identifiants alternatifs (comme des noms d’utilisateur ou des ID CRM).
- Définissez l’
external_idaveclogin()avant d’ajouter des alias. Les alias ajoutés aux abonnements sansexternal_idne se synchroniseront pas sur plusieurs abonnements. - Consultez Alias pour plus de détails.
JavaScript
getLanguage(), setLanguage()
Obtenez et/ou remplacez la langue auto-détectée de l’utilisateur. Consultez Messagerie multilingue pour une liste des codes de langue disponibles.
JavaScript
Événements personnalisés
Déclenchez des Journeys et l’activation de l’étape Wait Until via un événement personnalisé.Les événements personnalisés nécessitent le SDK Web
160500+.Un utilisateur doit être connecté pour que les événements personnalisés soient suivis.Appelez les API d’événements personnalisés sur l’instance OneSignal passée à OneSignalDeferred.push (voir Configuration et débogage en haut de cette page), et non sur window.OneSignal — le SDK de page est initialisé via la file d’attente différée, et ce callback est le moyen pris en charge d’accéder à OneSignal.User.name- Requis. Le nom de l’événement sous forme de chaîne.properties- Optionnel. Paires clé-valeur à ajouter à l’événement. Le dictionnaire ou la carte des propriétés doit être sérialisable en un objet JSON valide. Prend en charge les valeurs imbriquées.
os_sdk qui sera disponible à la consommation. Par exemple, pour cibler les événements par type d’abonnement, vous accéderiez à os_sdk.type.
json
trackEvent()
Appelez après la fin de init(). Cet exemple utilise un seul callback différé afin que init s’exécute toujours avant trackEvent :
JavaScript
En production, ajoutez
trackEvent au callback différé où vous faites déjà await OneSignal.init(...). N’enregistrez pas un second init sauf si c’est intentionnel.Tags
Les tags sont des paires personnaliséesclé : valeur de données chaîne que vous définissez sur les utilisateurs en fonction d’événements ou de propriétés utilisateur. Consultez Tags pour plus de détails.
addTag(), addTags()
Définissez un ou plusieurs tags sur l’utilisateur actuel.
- Les valeurs seront remplacées si la clé existe déjà.
- Dépasser la limite de tags de votre plan entraînera l’échec silencieux des opérations.
JavaScript
removeTag(), removeTags()
Supprimez un ou plusieurs tags de l’utilisateur actuel.
JavaScript
getTags()
Renvoie la copie locale des tags de l’utilisateur. Les tags sont mis à jour depuis le serveur pendant login() ou les nouvelles sessions d’application.
JavaScript
Confidentialité
setConsentRequired()
Impose le consentement de l’utilisateur avant le début de la collecte de données. Doit être appelé avant l’exécution de init() (par exemple au début du premier callback OneSignalDeferred, avant await OneSignal.init(...)).
Cette méthode est identique à l’ajout de requiresUserPrivacyConsent: true aux options d’init.
JavaScript
setConsentGiven()
Accorde ou révoque le consentement de l’utilisateur pour la collecte de données. Sans consentement, aucune donnée n’est envoyée à OneSignal et aucun abonnement n’est créé.
- Si
setConsentRequired()ourequiresUserPrivacyConsentest défini surtrue, notre SDK ne sera pas complètement activé jusqu’à ce quesetConsentGivensoit appelé avectrue. - Si
setConsentGivenest défini surtrueet qu’un abonnement est créé, puis qu’il est ensuite défini surfalse, cet abonnement ne recevra plus de mises à jour. Les données actuelles de cet abonnement restent inchangées jusqu’à ce quesetConsentGivensoit à nouveau défini surtrue. - Si vous souhaitez supprimer les données utilisateur et/ou d’abonnement, utilisez nos API Delete user ou Delete subscription.
JavaScript
Abonnements
Un abonnement représente une instance unique de canal de messagerie (par exemple, un navigateur) et possède un Subscription ID unique (l’ID de niveau appareil de OneSignal). Un utilisateur peut avoir plusieurs abonnements sur différents appareils et plateformes. Consultez Abonnements pour plus de détails.User.PushSubscription.id
Récupère le Subscription ID push web du navigateur actuel, stocké localement par le SDK.
Cet ID identifie de manière unique le canal push de ce navigateur spécifique, et non l’utilisateur. Il est couramment utilisé pour associer des appareils ou des navigateurs à votre backend ou pour déboguer des problèmes de livraison.
Si elle est appelée avant la création ou la restauration de l’abonnement, cette valeur peut être null.
Pour détecter de manière fiable quand le Subscription ID push web devient disponible ou change, utilisez le listener d’abonnement push.
JavaScript
User.PushSubscription.token
Renvoie le token d’abonnement push actuel. Peut renvoyer null si appelé trop tôt. Il est recommandé d’obtenir ces données dans l’observateur d’abonnement pour réagir aux changements.
JavaScript
addEventListener() Changements d’abonnement push
Utilisez cette méthode pour répondre aux changements d’abonnement push comme :
- L’appareil reçoit un nouveau token push de Google (FCM) ou Apple (APNs)
- OneSignal attribue un ID d’abonnement
- La valeur
optedInchange (par exemple après un appel àoptIn()ouoptOut()) - L’utilisateur bascule la permission push dans les paramètres du navigateur ou du système d’exploitation, puis revient sur votre site
change avec un objet d’état qui inclut previous et current afin que vous puissiez détecter ce qui a changé.
Lorsque
autoResubscribe est true, les visiteurs qui reviennent peuvent déclencher l’événement change avec optedIn: true à la fois sur previous et current parce que la permission du navigateur n’a pas changé — seul le token push a été réenregistré (par exemple, après avoir effacé les données du site ou après une migration). Pour l’analytique ou le suivi côté serveur qui doit refléter les nouveaux abonnements ou réabonnements, event.current.token && !event.previous.token est généralement plus fiable que la seule comparaison de optedIn.removeEventListener() avec la même référence de gestionnaire que celle passée à addEventListener().
JavaScript
dataLayer) : déclenchez un événement personnalisé lorsqu’un token push apparaît et qu’il n’y avait pas de token auparavant, afin qu’un réenregistrement avec optedIn inchangé soit tout de même comptabilisé correctement. Le Subscription ID peut arriver dans le même callback ou dans un événement change ultérieur selon le timing :
JavaScript
optOut(), optIn(), optedIn
Contrôle le statut d’abonnement (subscribed ou unsubscribed) de l’abonnement push actuel. Utilisez ces méthodes pour contrôler le statut d’abonnement push sur votre site. Cas d’utilisation courants : 1) Empêcher l’envoi de push aux utilisateurs qui se déconnectent. 2) Implémenter un centre de préférences de notification au sein de votre site.
optOut(): Définit le statut d’abonnement push actuel sur désabonné (même si l’utilisateur a un token push valide).optIn(): Effectue l’une des actions suivantes :- Si l’abonnement dispose d’un token push valide, il définit le statut d’abonnement push actuel sur
subscribed. - Si l’abonnement ne dispose pas d’un token push valide, il tente d’afficher l’invite de permission push.
- Si l’abonnement dispose d’un token push valide, il définit le statut d’abonnement push actuel sur
optedIn: Renvoietruesi le statut d’abonnement push actuel est abonné, sinonfalse. Si le token push est valide mais queoptOut()a été appelé, cela renverrafalse.
JavaScript
addEmail(), removeEmail()
Ajoute ou supprime un abonnement email (adresse email) pour l’utilisateur actuel.
Ces méthodes sont compatibles avec la Vérification d’identité.
Lorsque vous appelez addEmail(email) :
- L’adresse email devient un abonnement email pour l’utilisateur actuel.
- L’email peut être créé ou réattribué.
- La même adresse email ne peut pas exister plusieurs fois dans la même application OneSignal. Si vous voyez des adresses email en double, vérifiez vos requêtes API REST et contactez le support si nécessaire.
Lorsque vous appelez
removeEmail(email) :
- L’abonnement email est supprimé de l’utilisateur actuel.
- L’External ID actuel est supprimé de l’abonnement email.
- Un nouveau OneSignal ID est attribué à l’abonnement email.
- Les autres abonnements (push, SMS, autres emails) ne sont pas affectés.
- Appelez d’abord
login(), puis appelezaddEmail(). Sinon, l’email peut être rattaché à un utilisateur anonyme. - Utilisez une adresse email stable et vérifiée.
- Suivez les Bonnes pratiques de réputation email.
JavaScript
addSms(), removeSms()
Ajoute ou supprime un abonnement SMS (numéro de téléphone) pour l’utilisateur actuel. Les numéros de téléphone doivent être fournis au format E.164 (par exemple, +15551234567).
Ces méthodes sont compatibles avec la Vérification d’identité.
Lorsque vous appelez addSms(phoneNumber) :
- Le numéro de téléphone devient un abonnement SMS pour l’utilisateur actuel.
- Le numéro peut être créé ou réattribué.
- Le même numéro de téléphone ne peut pas exister plusieurs fois dans la même application OneSignal. Si vous voyez des numéros de téléphone en double, vérifiez vos requêtes API REST et contactez le support si nécessaire.
Lorsque vous appelez
removeSms(phoneNumber) :
- L’abonnement SMS est supprimé de l’utilisateur actuel.
- L’External ID actuel est supprimé de l’abonnement SMS.
- Un nouveau OneSignal ID est attribué à l’abonnement SMS.
- Les autres abonnements (push, email, autres SMS) ne sont pas affectés.
- Appelez d’abord
login(), puis appelezaddSms(). Sinon, l’abonnement SMS peut être rattaché à un utilisateur anonyme. - Validez et normalisez toujours les numéros de téléphone au format E.164 avant l’envoi.
- Suivez les Exigences d’enregistrement SMS.
JavaScript
Invites slidedown
Affichez les diverses invites slidedown sur vos sites. Consultez Invites d’autorisation web pour plus de détails.- Si rejetée, les futurs appels seront ignorés pendant au moins trois jours. D’autres refus allongeront le temps nécessaire avant de solliciter à nouveau l’utilisateur.
- Pour contourner le comportement de back-off, passez
{force: true}à la méthode. Cependant, pour offrir une bonne expérience utilisateur, liez l’action à un événement initié par l’interface utilisateur comme un clic de bouton.
promptPush()
Affiche l’invite slidedown régulière pour les notifications push.
- Si vous utilisez des catégories, appelez plutôt
promptPushCategories(). - Soumis à la logique de back-off définie par OneSignal. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
promptPushCategories()
Affiche l’invite slidedown de catégories, permettant aux utilisateurs de mettre à jour leurs tags. Déclenche également l’invite native de permission de notification si l’utilisateur n’a pas déjà accordé la permission.
- Si vous n’utilisez pas de catégories, appelez plutôt
promptPush(). - Soumis à la logique de back-off définie par OneSignal. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
promptSms()
Affiche l’invite d’abonnement SMS.
- Soumis à la logique de back-off définie par OneSignal. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
promptEmail()
Affiche l’invite d’abonnement email.
- Soumis à la logique de back-off définie par OneSignal. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
promptSmsAndEmail()
Affiche simultanément les invites d’abonnement SMS et email.
- Soumis à la logique de back-off définie par OneSignal. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
addEventListener() Slidedown
Ajoutez un callback pour détecter l’événement d’affichage de l’invite Slidedown.
JavaScript
Notifications push
requestPermission()
Demande la permission des notifications push via l’invite native du navigateur. Soumis à la logique de back-off définie par le navigateur. Consultez Invites d’autorisation web pour plus de détails.
JavaScript
isPushSupported()
Renvoie true si le navigateur actuel prend en charge le push web.
JavaScript
OneSignal.Notifications.permission
Renvoie un booléen indiquant la permission actuelle du site pour afficher des notifications.
true: L’utilisateur a accordé la permission d’afficher des notifications.false: L’utilisateur a soit refusé, soit n’a pas encore accordé la permission d’afficher des notifications.
optOut de OneSignal, le Subscription ID ou le token push. Pour ceux-ci, utilisez User.PushSubscription (et les méthodes associées ci-dessous).
Pour écouter les changements de permission, utilisez l’événement permissionChange.
JavaScript
addEventListener() Notifications
Vous pouvez vous connecter au cycle de vie des notifications avec addEventListener. Remplacez le premier argument par un nom d’événement tel que permissionChange, click ou dismiss (voir les sous-sections ci-dessous). Vous pouvez enregistrer plusieurs gestionnaires par événement.
Pour arrêter d’écouter, appelez removeEventListener avec le même nom d’événement et la même référence de gestionnaire.
JavaScript
permissionChange
Cet événement se produit lorsque l’utilisateur clique sur Autoriser ou Bloquer ou rejette la demande de permission native du navigateur.
JavaScript
permissionPromptDisplay
Cet événement se produit lorsque la demande de permission native du navigateur vient d’être affichée.
JavaScript
click
Cet événement se déclenchera lorsque le corps/titre de la notification ou les boutons d’action sont cliqués.
JavaScript
foregroundWillDisplay
Cet événement se produit avant qu’une notification ne s’affiche. Cet événement est déclenché sur votre page. Si plusieurs onglets de navigateur sont ouverts sur votre site, cet événement sera déclenché sur toutes les pages sur lesquelles OneSignal est actif.
JavaScript
dismiss
Cet événement se produit lorsque :
- Un utilisateur rejette intentionnellement la notification sans cliquer sur le corps de la notification ou les boutons d’action
- Sur Chrome sur Android, un utilisateur rejette toutes les notifications push web (cet événement sera déclenché pour chaque notification push web que nous affichons)
- Une notification expire d’elle-même et disparaît
Cet événement ne se produit pas si un utilisateur clique sur le corps de la notification ou sur l’un des boutons d’action. Cela est considéré comme un événement
click de notification.JavaScript
setDefaultUrl()
Définit l’URL par défaut pour les notifications.
Si vous n’avez pas défini d’URL par défaut, votre notification s’ouvrira à la racine de votre site par défaut.
JavaScript
setDefaultUrl() de la même manière ; le comportement de lancement et d’icône suit votre configuration Safari / Apple (par exemple la Site URL dans vos paramètres web OneSignal). Consultez Configuration du site.
setDefaultTitle()
Définit le titre par défaut à afficher sur les notifications.
JavaScript
Résultats
Les méthodes de résultats se trouvent surOneSignal.Session. Utilisez la même instance OneSignal différée qu’ailleurs après init.
sendOutcome()
Déclenche un résultat qui peut être consulté dans le tableau de bord OneSignal. Accepte un nom de résultat (string, requis) et une valeur (number, optionnel). Chaque fois que la méthode sendOutcome est invoquée avec le même nom de résultat transmis, le nombre de résultats augmentera, et la valeur du résultat sera augmentée du montant transmis (s’il est inclus). Consultez Résultats personnalisés pour plus de détails.
JavaScript
sendUniqueOutcome()
Déclenche un résultat qui peut être consulté dans le tableau de bord OneSignal. Accepte uniquement le nom du résultat (string, requis). sendUniqueOutcome augmentera le nombre pour ce résultat une seule fois par utilisateur. Consultez Résultats personnalisés pour plus de détails.
JavaScript