Passer au contenu principal

Vue d’ensemble

La Livraison confirmée suit quand un appareil reçoit réellement une notification push envoyée via OneSignal. Lorsque le SDK OneSignal sur l’appareil reçoit un push, il envoie un événement de confirmation à OneSignal contenant l’ID de notification et l’ID d’abonnement de l’appareil. Cela vous permet de voir exactement quels abonnements ont reçu quelles notifications. Dans votre tableau de bord OneSignal, la Livraison confirmée apparaît dans le Rapport de message comme Confirmé (ou Reçu). Pour toutes les métriques de livraison et d’engagement, consultez le Glossaire des métriques.
Flux de livraisons confirmées
La Livraison confirmée est différente de “Livré.” Les services push de plateforme (APNs, FCM, ADM, HMS) indiquent si une notification a été acceptée par le service — pas si l’appareil l’a réellement reçue. La Livraison confirmée est la confirmation côté appareil.

Prérequis

Limitations spécifiques à la plateforme

iOS
  • Nécessite à la fois la configuration de l’extension de service de notification et du groupe d’applications.
  • APNs ne conserve qu’un seul message par application lorsque hors ligne. Si plusieurs notifications push sont envoyées hors ligne, seule la dernière est livrée.
Huawei
  • Pris en charge uniquement pour le data type de message Huawei.
  • Pour le type message, Huawei fournit les données de réception uniquement dans leur propre tableau de bord.
Web
  • Safari ne prend pas en charge la Livraison confirmée.

Dépannage de la Livraison confirmée

Si vous ne recevez pas de notifications push du tout, consultez d’abord Notifications non affichées.

iOS

La Livraison confirmée sur iOS nécessite deux choses qui fonctionnent ensemble :
  1. Une Notification Service Extension (NSE) qui exécute le code OneSignal lorsqu’un push arrive
  2. Un App Group partagé entre votre cible d’application principale et la cible NSE pour qu’elles puissent échanger des données
Si l’une ou l’autre est manquante ou mal configurée, l’appareil reçoit le push mais ne le signale jamais à OneSignal. Vérifiez votre configuration iOS
1

Confirmez que la cible NSE existe et a le code correct

Dans Xcode, vérifiez que vous avez une cible OneSignalNotificationServiceExtension listée sous les cibles de votre projet. Si elle n’existe pas, suivez l’Étape 2 de la Configuration du SDK iOS.Ouvrez le fichier NotificationService.swift (ou .m) de la NSE. Il doit appeler OneSignalExtension.didReceiveNotificationExtensionRequest dans didReceive(_:withContentHandler:). Si le fichier contient encore le code de modèle par défaut d’Apple, remplacez-le par le code NSE OneSignal.
2

Confirmez que la NSE a le package OneSignalExtension

Sélectionnez votre cible NSE > General > Frameworks and Libraries (ou Build Phases > Link Binary With Libraries). Vérifiez que OneSignalExtension est listé. La cible de l’application principale utilise OneSignalFramework, mais la cible NSE doit utiliser OneSignalExtension — ce sont des packages différents.
3

Vérifiez que l'App Group est correctement configuré sur les deux cibles

Le SDK OneSignal utilise un App Group pour partager des données entre votre application principale et la NSE. Il y a deux façons de le configurer — choisissez celle qui correspond à votre configuration.
  1. Sélectionnez votre cible d’application principale > Signing & Capabilities > App Groups.
  2. Confirmez l’App Group.
Si votre App Group est group.YOUR_MAIN_APP_BUNDLE_ID.onesignal — où YOUR_MAIN_APP_BUNDLE_ID est l’identifiant de bundle de la cible de votre application principale (disponible sous General > Identity), suivez l’onglet App Group par défaut. Sinon, suivez l’onglet App Group personnalisé.
  1. Sélectionnez votre cible NSE > Signing & Capabilities > App Groups.
  2. Confirmez que le même App Group est listé. S’il manque, ajoutez-le via + Capability > App Groups et sélectionnez le même groupe.
Une erreur courante est d’utiliser l’identifiant de bundle de la NSE au lieu de celui de l’application principale :
  • Correct : group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
  • Incorrect : group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
Votre cible d’application principale et votre cible NSE doivent avoir le même identifiant d’App Group.
Si vous utilisez des fichiers .xcconfig pour les paramètres de build, vérifiez que l’App Group n’est pas remplacé ou omis dans ces fichiers.
4

Confirmez que les cibles de déploiement minimum correspondent

Sélectionnez votre cible NSE > General > Minimum Deployments. Cette valeur doit correspondre au déploiement minimum de la cible de votre application principale. Une incompatibilité peut empêcher la NSE de s’exécuter sur certaines versions du système d’exploitation.
5

Décochez "Copy only when installing"

Sélectionnez votre cible d’application principale > Build Phases > Embed App Extensions. Assurez-vous que “Copy only when installing” est décoché. Si coché, la NSE n’est pas intégrée lors des builds de développement, donc elle ne s’exécute jamais lors des tests.
6

Vérifiez les valeurs NSExtension dans Info.plist

Sélectionnez votre cible NSE > onglet Info et développez la clé NSExtension. Confirmez qu’elle contient :
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
Si votre NSE est écrite en Objective-C, utilisez NotificationService au lieu de $(PRODUCT_MODULE_NAME).NotificationService.
7

Vérifiez que mutable-content est configuré

OneSignal définit automatiquement mutable-content: 1 dans la charge utile push, ce qui indique à iOS d’invoquer la NSE. Si vous envoyez des pushes via l’API REST, vérifiez que vous ne définissez pas explicitement mutable_content: false. Sans mutable-content, iOS n’exécute pas la NSE et la Livraison confirmée ne peut pas se déclencher.
8

Testez que la NSE s'exécute

Ajoutez cette ligne temporairement dans didReceive avant l’appel OneSignal :
bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
Envoyez-vous un push de test. Si le corps de la notification commence par [Modified], la NSE s’exécute correctement. Si non, repassez les étapes précédentes — la NSE n’est pas invoquée. Supprimez cette ligne après les tests.Pour le débogage avancé de la NSE avec les journaux de la Xcode Console, consultez Débogage de l’iOS Notification Service Extension.

Android

Web

  • Safari n’est pas pris en charge.
  • Pour les autres navigateurs, assurez-vous que la migration vers le SDK v16 est terminée :
    • Initialisation SDK correcte :
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Référence Service Worker correcte :
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

FAQ

Pourquoi mes chiffres de Livraison confirmée sont-ils faibles ou manquants ?

Les causes les plus courantes sont des problèmes de configuration (surtout sur iOS), des appareils inactifs et des limitations de plateforme.
  1. Mauvaise configuration iOS : L’extension de service de notification ou l’App Group est manquant ou incorrect. Consultez Dépannage de la Livraison confirmée sur iOS ci-dessus.
  2. Appareils inactifs ou abandonnés : Les appareils hors ligne ou qui ne sont plus utilisés ne reçoivent pas de pushes ni n’envoient d’événements de Livraison confirmée. Consultez Comment gérer les appareils inactifs ? ci-dessous.
  3. Limitations de plateforme : Le type message de Huawei et Safari ne prennent pas en charge la Livraison confirmée.
  4. Fermeture forcée sur Android : Certains fabricants d’appareils traitent le balayage de l’application comme une fermeture forcée, ce qui arrête les événements du SDK. Consultez le Guide de push mobile non affiché.

Comment gérer les appareils inactifs ?

Les appareils hors ligne ou abandonnés ne reçoivent pas de notifications push ni n’envoient d’événements de Livraison confirmée. C’est courant lorsque les utilisateurs remplacent ou abandonnent des appareils. Pour réengager les utilisateurs inactifs :
  • Utilisez l’Activité d’audience pour renvoyer aux utilisateurs qui n’ont pas confirmé la livraison.
  • Créez des Segments basés sur la Dernière session (par ex., inactif pendant 90+ jours).
    • Combinez avec un Journey de réengagement pour les reconquérir.
    • Ciblez périodiquement les utilisateurs inactifs pour éliminer les appareils inaccessibles.
Consultez Quand les statuts d’abonnement push sont-ils mis à jour ? pour plus de détails sur la façon dont OneSignal met à jour le statut des abonnements.

Pourquoi affiche-t-il Confirmé mais n’apparaît pas sur mon appareil ?

Un événement de Livraison confirmée signifie que l’appareil a reçu la charge utile push. Dans de rares cas, la notification peut ne pas s’afficher. Causes possibles :
Besoin d’aide ?Discutez avec notre équipe d’assistance ou envoyez un e-mail à support@onesignal.comVeuillez inclure :
  • Les détails du problème que vous rencontrez et les étapes de reproduction si disponibles
  • Votre OneSignal App ID
  • L’External ID ou le Subscription ID le cas échéant
  • L’URL du message que vous avez testé dans le OneSignal Dashboard le cas échéant
  • Tous les journaux ou messages d’erreur pertinents
Nous serons ravis de vous aider !