Cycle de vie des notifications dans la barre
Chaque notification OneSignal affichée sur un appareil est suivie par le SDK. Ce qui se passe ensuite détermine si elle peut réapparaître un jour :Comportement de clic et de rejet
Cliquer sur une notification ouvre votre application (ou l’URL de lancement de la notification), retire la notification de la barre et déclenche le callbackaddClickListener() avec la charge utile de la notification et l’ID du bouton d’action cliqué. Si la notification cliquée appartient à un groupe, le SDK met à jour ou supprime le résumé du groupe. Les notifications cliquées ne sont jamais restaurées.
Rejeter une notification (la balayer ou appuyer sur Tout effacer dans la barre) la marque comme rejetée et met à jour le compteur de badge ainsi que tout résumé de groupe. Les notifications rejetées ne sont jamais restaurées. Le SDK ne fournit pas de listener de rejet ; le rejet est suivi en interne.
Les notifications affichées pendant que votre application est en premier plan passent d’abord par le listener de cycle de vie en premier plan, où vous pouvez empêcher l’affichage.
Notifications restaurées (Android)
Android peut retirer de force des notifications sans action de l’utilisateur : lors d’un redémarrage de l’appareil, d’une mise à jour de l’application et d’une fermeture forcée (y compris les gestionnaires de batterie agressifs sur certains appareils). Le SDK Android réaffiche (restaure) automatiquement les notifications concernées au prochain démarrage à froid de l’application, afin que les messages livrés que l’utilisateur n’a jamais vus ni rejetés ne soient pas perdus. Les notifications restaurées réapparaissent silencieusement dans la catégorie Restored de faible importance. Seules les notifications qui n’ont pas été cliquées ni rejetées, qui sont dans leur TTL et qui ont été reçues au cours des 7 derniers jours sont restaurées, jusqu’à 49 notifications. Les règles d’éligibilité complètes et les contrôles se trouvent dans Notifications restaurées (Android). Pour réduire les restaurations, utilisez unttl plus court lors de l’envoi ou effacez les notifications consommées avec les méthodes du SDK ci-dessous. iOS n’a pas de comportement de restauration.
Comportement des badges
Sur iOS, les badges sont définis par la charge utile de la notification (ios_badgeType et ios_badgeCount) et nécessitent un App Group pour que l’extension de service puisse mettre à jour les compteurs avec précision. Par défaut, le SDK efface le badge lorsque l’application s’ouvre.
Sur Android, le badge de l’icône de l’application reflète le nombre de notifications OneSignal actives dans la barre et est géré via les catégories de notification. Le SDK met à jour le compteur automatiquement lorsque les notifications sont affichées, rejetées, cliquées ou effacées, et le réinitialise à 0 lorsque vous appelez clearAllNotifications().
La configuration, les options par plateforme et le dépannage sont couverts dans Badges.
Effacement des notifications par programmation
Effacez les notifications lorsque leur contenu a été consommé dans votre application, pas lors d’événements du cycle de vie de l’application. Les schémas courants :- Synchronisation contenu-consommé : l’utilisateur ouvre l’écran vers lequel pointent les notifications (une boîte de réception, un centre de messages ou un fil d’activité), donc les notifications sont désormais redondantes. Effacez-les toutes, ou utilisez les méthodes ciblées si seule une partie du contenu a été consommée.
- Déconnexion : effacez tout pour que les notifications de l’utilisateur précédent ne soient pas visibles par l’utilisateur suivant.
collapse_id lors de l’envoi pour remplacer les notifications au lieu de les empiler, ou un TTL plus court pour faire expirer celles qui ne sont pas livrées.
clearAllNotifications()
Retire les notifications de votre application de la barre et réinitialise le compteur de badge à 0. Sur Android, cela retire uniquement les notifications créées par OneSignal et les marque comme rejetées afin qu’elles ne soient pas restaurées. Sur iOS, cela retire toutes les notifications livrées de votre application, y compris les notifications locales et les push d’autres fournisseurs. Consultez la référence complète de la méthode.
Si vous effacez au lancement de l’application pour empêcher les notifications restaurées, limitez l’appel à Android dans les applications multiplateformes. Sur iOS, cela retire également les notifications locales et les push d’autres fournisseurs.
removeNotification() et removeGroupedNotifications() (Android)
Retirez une seule notification par son ID de notification Android, ou toutes les notifications d’un groupe par sa clé de groupe. Les notifications retirées sont marquées comme rejetées et ne sont pas restaurées. Utilisez ces méthodes lorsque seule une partie du contenu de la barre a été consommée, comme une conversation parmi plusieurs. Consultez la référence de la méthode.
Rejeter automatiquement les notifications après un délai
Il n’existe pas de paramètre à l’envoi qui retire une notification affichée après un temps donné. Ce qui est possible diffère selon la plateforme :- Android 8.0 (API 26) et versions ultérieures : définissez un délai d’expiration dans une extension de service de notification en utilisant
setTimeoutAfter(). Android retire la notification du volet lorsque le délai expire. Sur les appareils sous API 26, l’appel est ignoré et la notification reste jusqu’à ce que l’utilisateur interagisse avec elle. - iOS : non pris en charge. iOS n’a aucun moyen de faire expirer automatiquement une notification livrée. Les options les plus proches sont de la remplacer par une notification plus récente via
collapse_id, ou de la retirer depuis une Notification Service Extension avec la méthode d’AppleremoveDeliveredNotifications(withIdentifiers:)lorsqu’un push ultérieur arrive.
additionalData et lisez-la depuis l’événement dans votre extension de service.
Une notification retirée par
setTimeoutAfter() est rejetée par le système, donc le SDK OneSignal ne la restaure pas. Ne confondez pas cela avec ttl, qui contrôle combien de temps un message non livré attend un appareil hors ligne et ne retire jamais une notification affichée.Personnalisation des notifications avec les extensions de service
Les extensions de service s’exécutent avant l’affichage d’une notification, vous permettant de modifier son apparence, de recevoir des données en arrière-plan ou d’empêcher entièrement l’affichage :- Sur Android, implémentez
INotificationServiceExtensionet utilisezsetExtender()pour modifier les optionsNotificationCompat, ou appelezevent.preventDefault()pour supprimer l’affichage. - Sur iOS, utilisez une
UNNotificationServiceExtension(laOneSignalNotificationServiceExtensioncréée lors de la configuration) pour les médias enrichis, les incréments de badge et la livraison confirmée.
FAQ
Pourquoi d’anciennes notifications réapparaissent-elles à l’ouverture de l’application sur Android ?
Le SDK Android restaure les notifications qui ont été retirées de force de la barre, par exemple après un redémarrage de l’appareil, une mise à jour de l’application ou une fermeture forcée. Les notifications que l’utilisateur a rejetées ou cliquées ne sont pas restaurées. Consultez Notifications restaurées (Android) pour les règles d’éligibilité et les contrôles.Le TTL retire-t-il une notification de la barre après son expiration ?
Non. Le TTL contrôle combien de temps un message non livré attend un appareil hors ligne, et sur Android il délimite également quelles notifications peuvent être restaurées. Il ne retire jamais une notification déjà affichée dans la barre. Pour retirer les notifications affichées, utilisez les méthodes d’effacement. Pour les retirer après un temps donné sur Android, consultez Rejeter automatiquement les notifications après un délai.Puis-je effacer le badge sans effacer la barre ?
Oui sur iOS : le badge s’efface automatiquement lorsque l’application s’ouvre (sauf si désactivé), laissant le contenu de la barre en place. Sur Android, le badge reflète les notifications actives dans la barre, il ne peut donc pas être défini indépendamment d’elles. Consultez Badges.Existe-t-il un listener pour le rejet d’une notification par l’utilisateur ?
Non. Le SDK suit le rejet en interne pour éviter de restaurer les notifications rejetées, mais n’expose pas d’événement de rejet. Le listener de clic couvre uniquement les clics.Référence du SDK mobile
Référence complète des méthodes et listeners de notification.
Charge utile OSNotification
Champs de la charge utile et règles des notifications restaurées.
Extensions de service mobiles
Interceptez et personnalisez les notifications avant l’affichage.