Passer au contenu principal
Les notifications push que vous envoyez depuis OneSignal doivent d’abord être transmises aux différents services push (par exemple, FCM, APNS, HMS). À partir des services push, les messages sont livrés à l’appareil de chaque utilisateur. Dans votre tableau de bord OneSignal Rapports de messages push :
  • Livré signifie que la notification push a été transmise avec succès aux services push. Nous recevons la réponse des services push.
  • Confirmé signifie que le SDK OneSignal sur l’appareil a reçu la notification. Nous obtenons ce statut directement de l’appareil de chaque utilisateur.
Si votre notification a été “Livrée” mais pas “Confirmée” et n’est pas apparue sur l’appareil (ou a été retardée), ce guide vous aide à dépanner pourquoi.

Prérequis

Pour dépanner efficacement, rassemblez les éléments suivants :
Si vous n’avez que l’ID externe, recherchez l’abonnement dans l’onglet Audience > Abonnements en utilisant des filtres comme Type d’appareil, Dernière session et Adresse IP.

Problèmes au niveau de l’appareil

Éléments contrôlés par l’utilisateur sur l’appareil qui peuvent affecter la livraison des notifications push.

Autorisation push et statut d’abonnement

Sur l’appareil, vérifiez les Paramètres de notification de l’application. Vérifiez que les autorisations de notification sont activées. Ensuite, ouvrez l’application. Il est impératif d’ouvrir l’application sur l’appareil pour que notre SDK mette à jour le statut d’abonnement et d’autres propriétés. Dans votre tableau de bord OneSignal Audience > Abonnements :
  • Recherchez l’ID d’abonnement
  • Si vous n’avez pas l’ID d’abonnement, essayez de le trouver en recherchant l’ID externe et/ou en filtrant par Type d’appareil, Dernière session et Adresse IP.
Vous devriez voir que l’abonnement push a un statut push “Abonné”.

Catégories Android désactivées

Si l’appareil est un Android, vérifiez dans Paramètres > Notifications > Votre application que “Afficher les notifications” est activé et que toutes les catégories en dessous sont activées. Si vous avez une catégorie désactivée, vous ne recevrez pas de notifications de cette catégorie. Dans cet exemple, la catégorie Panier abandonné - Urgent est désactivée. Si cette catégorie est utilisée dans une notification, l’appareil ne recevra pas la notification.

L'image montre la catégorie désactivée pour votre application sur l'appareil, donc lors de l'envoi avec cette catégorie, l'appareil ne recevra pas ce push.

Si aucune catégorie n’est définie, OneSignal utilise une catégorie par défaut “Divers”. Assurez-vous que cette catégorie est activée si vous la voyez désactivée. Plus de détails dans Catégories de notification Android.
Certains appareils Samsung désactivent automatiquement par défaut les catégories pour les applications. Voir les détails dans ce post reddit et ces articles d’Android Police et article 2.
Pour essayer d’éduquer vos utilisateurs à ce sujet, vous pouvez configurer un message in-app pour cibler les utilisateurs Samsung et afficher des instructions pour activer les catégories. Nous fournissons un tutoriel Exemple : Cibler certains fabricants et appareils Android.

L’application Android est arrêtée de force

Lorsqu’une application Android est arrêtée de force, l’appareil empêchera l’affichage des notifications push pour cette application. Pour aider à économiser la batterie, certains fabricants Android comme Xiaomi, Huawei, Samsung et d’autres ont mis en œuvre une gestion agressive des processus en arrière-plan qui peut arrêter de force votre application lorsque l’utilisateur la fait glisser (tout en omettant les grandes applications comme Facebook, WhatsApp, Gmail, etc.). Il y a beaucoup d’informations à ce sujet en ligne comme : https://dontkillmyapp.com/ et nous avons écrit un article de blog à ce sujet qui a généré beaucoup de discussion sur Reddit. Selon l’appareil, vous devrez peut-être suivre les étapes suivantes pour éviter que cela ne se produise :
  1. Autoriser l’activité en arrière-plan :
    • Paramètres > Applications > Votre application > Batterie > Autoriser l’activité en arrière-plan.
  2. Désactiver la fonction Applications en veille :
    • Paramètres > Entretien de la batterie et de l’appareil > Batterie > Limites d’utilisation en arrière-plan > Applications en veille > Retirer votre application de cette liste.
  3. Verrouiller l’application dans les applications récentes :
    • Ouvrez votre application, puis appuyez sur le bouton Applications récentes.
    • Trouvez votre application, appuyez et maintenez la fenêtre de l’application, puis Verrouiller cette application (disponible sur certains modèles Samsung).
  4. Activer le démarrage automatique pour l’application (sur certains appareils) :
    • Paramètres > Applications > Votre application > Autorisations > Démarrage automatique > Activer.
  5. Désactiver l’optimisation de batterie adaptative pour l’application :
    • Paramètres > Entretien de la batterie et de l’appareil > Batterie > Plus de paramètres de batterie > Batterie adaptative > Désactiver (ou exclure votre application).
Lors des tests, assurez-vous que votre application est en cours d’exécution lors de l’envoi de la notification. Consultez Obtenir un journal de débogage pour vérifier que vous recevez le message.

Connexion réseau

Les appareils doivent être en ligne pour recevoir des notifications push. Si votre appareil est éteint, en mode avion, a une connexion internet instable ou inexistante, le push ne s’affichera pas tant qu’une connexion appropriée n’est pas établie. Consultez Paramètre Time To Live (TTL) pour plus de détails.

Connexion Wifi, pare-feu ou VPN

Vérifiez le réseau / WiFi auquel vous êtes connecté car il peut avoir fermé votre connexion aux serveurs Apple ou Google. Essayez de désactiver et de réactiver votre connexion internet. Essayez également sans wifi en utilisant les données cellulaires. Si vous restreignez le trafic vers ou depuis Internet, vous devez le configurer pour autoriser la connectivité avec les services push.

Modes Ne pas déranger et focus

Si l’appareil utilise un mode “Ne pas déranger” ou “Focus”, il peut empêcher l’affichage des notifications ou regrouper les notifications différemment des autres notifications pour votre application. Si vous faites glisser les notifications regroupées en mode focus, elles n’apparaîtront pas plus tard dans les notifications déjà regroupées pour votre application dans le centre de notifications de l’appareil. Vérifiez et désactivez ces modes sur l’appareil.
  • iOS : Paramètres > Notifications > Mode Focus
  • Android : Paramètres > Notifications > Mode Focus
Ensuite, envoyez-vous quelques notifications de test pour vérifier.

Comportement de regroupement des notifications

En plus des modes Focus, différentes versions d’Android peuvent avoir leur propre comportement de regroupement de notifications. Solutions à essayer :
  1. Essayez de créer des catégories de notification Android soit dans votre tableau de bord OneSignal, soit en utilisant du code. Ensuite, définissez cet ID sur toutes vos notifications pour voir si cela a un effet.
  2. Vérifiez les paramètres spécifiques à l’appareil : Sur l’appareil, vérifiez Paramètres > Notifications > Paramètres avancés pour toutes les options de regroupement spécifiques à l’appareil.
  3. Vérifiez les limites de notification : Vérifiez si l’optimisation de la batterie ou les fonctionnalités de mise en veille de l’application sont activées pour votre application sur cet appareil spécifique.

Mode basse consommation et optimisation de la batterie

Appareils iOS : Désactivez le mode basse consommation lors des tests ou chargez l’appareil. Appareils Android : Il existe plusieurs noms différents pour les paramètres “Optimisation de la batterie” selon le fabricant de l’appareil et la version du système d’exploitation. Dans les Paramètres de batterie, définissez l’application sur “Non restreint” ou “Non optimisé”. Si vous n’avez pas ce paramètre, recherchez Optimisation de la batterie ou Mode d’économie d’énergie ou Économie d’énergie ou Limites d’utilisation en arrière-plan ou Paramètres de batterie adaptative et désactivez pour l’application ou lors des tests.

Particularités de l’émulateur

Votre appareil émulateur doit à la fois :
  1. Avoir les Google Play Services (Google Play Store) installés
  2. Démarrer avec un démarrage à froid
  • Ouvrir Android Studio Device Manager
  • Sélectionnez votre appareil, assurez-vous qu’il a le Google Play Store installé et cliquez sur Modifier
  • Allez dans Paramètres supplémentaires ou bouton Plus
  • Définir l’Option de démarrage sur Démarrage à froid
  • Enregistrez les modifications et redémarrez l’émulateur

Envoi de push

Choses courantes à vérifier lors de l’envoi de notifications push.

L’appareil n’est pas dans l’audience du message

Votre abonnement peut ne pas être inclus dans l’audience ciblée du message. Si vous utilisez des Segments ou des filtres, assurez-vous que votre abonnement correspond aux critères. Si vous ciblez un ID externe ou d’autres alias, vérifiez qu’il est défini et que vous envoyez au bon.

ID de regroupement

Si vous ajoutez un ID de regroupement à vos messages, la notification la plus récente remplacera les anciennes notifications avec le même ID. Vérifiez que vous ne définissez pas cela ou que vous le définissez correctement pour les notifications que vous souhaitez remplacer. Consultez Supprimer les notifications et TTL pour plus de détails.

Mode Doze Android, priorité et messages déprioritarisés (limités)

Les fonctionnalités d’économie d’énergie d’Android (mode Doze et App Standby) peuvent retarder ou bloquer les notifications. Ces modes s’activent automatiquement lorsque l’appareil est débranché et immobile pendant une période de temps. Si l’appareil est dans ces modes, l’envoi de messages haute priorité réveillera l’application. Cependant, en envoyer trop peut entraîner la déprioritisation de vos notifications et leur envoi avec une priorité normale. FCM indique :
Les messages haute priorité sur Android sont destinés à du contenu sensible au temps et visible par l’utilisateur, et devraient entraîner des notifications visibles par l’utilisateur. Si FCM détecte un modèle dans lequel les messages n’entraînent pas de notifications visibles par l’utilisateur, vos messages peuvent être déprioritarisés à priorité normale ou délégués pour traitement par Google Play Services.

Développeurs : Code bloquant ou supprimant les notifications

Prévention des notifications en premier plan OneSignal

Notre SDK dispose d’une méthode Écouteur d’événement de premier plan. Dans cette méthode, vous pouvez appeler event.preventDefault() qui bloquera l’affichage de la notification pendant que l’application est ouverte. Lors des tests, assurez-vous que l’application est en arrière-plan ou fermée pour vérifier que cela ne bloque pas les notifications.

Extension de service Android bloquant les notifications

Si vous configurez l’Extension de service de notification Android, c’est le point d’entrée de votre notification dans l’application. Vous pouvez bloquer des notifications avec la méthode event.preventDefault(). Vérifiez votre code pour voir si cela est utilisé et dans quelles conditions.

iOS UNUserNotificationCenterDelegate bloquant les notifications en premier plan

Si vous configurez le iOS UNUserNotificationCenterDelegate, vous pouvez avoir du code bloquant l’appareil iOS d’afficher la notification en premier plan. Supprimez ce code personnalisé et utilisez plutôt notre méthode SDK Écouteur d’événement de premier plan.

Effacement des badges iOS

L’effacement des badges peut affecter les notifications. Lorsqu’une application efface les badges, elle peut supprimer les notifications existantes du Centre de notifications. Le SDK de OneSignal effacera également les badges lorsque l’application s’ouvre, ce qui supprime les notifications. Consultez Badges pour plus de détails sur la façon d’éviter cela.

Suppression des notifications

Apple fournit la méthode removeAllDeliveredNotifications() pour supprimer toutes les notifications livrées de votre application du Centre de notifications. Consultez la documentation développeur Apple sur removeAllDeliveredNotifications().

Conflits Firebase

Si vous utilisez le SDK Firebase Messaging, vérifiez votre fichier Android Manifest pour la ligne suivante. Cela peut bloquer vos notifications.
com.google.firebase.iid.FirebaseInstanceIdReceiver

Tests

Suivez Obtenir un journal de débogage pour ajouter nos méthodes de débogage détaillées à l’application. Mettez l’application en arrière-plan et envoyez-vous un message. Si vous ne recevez pas l’événement de message, contactez support@onesignal.com avec les informations suivantes :
  • Le journal complet du test. Consultez Obtenir un journal de débogage pour plus de détails.
  • Le lien vers le rapport de message dans votre tableau de bord onesignal.com que vous avez envoyé lors du débogage. Cela se trouve dans Livraison > Messages envoyés. Cliquez simplement sur le message que vous avez envoyé, puis copiez-collez l’URL et partagez-la avec nous.

Vérification de l’état de votre application

Exécutez ce qui suit pour vérifier l’état actuel de votre application. Remplacez “com.company.appname” par votre nom de package.
adb shell dumpsys package com.company.appname | grep stopped
Si vous voyez stopped=false, tout va bien, sinon vous verrez stopped=true, ce qui signifie que votre application a été arrêtée de force d’une manière ou d’une autre. Une autre façon est d’envoyer quelques notifications et de vérifier l’entrée logcat GCM suivante.
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent {
   act=com.google.android.c2dm.intent.RECEIVE pkg=com.onesignal.example (has extras)
}
Si vous voyez cet intent annulé ci-dessus, votre application n’a pas pu être démarrée pour traiter la notification. Certains fabricants d’appareils mettront en liste blanche les applications pour qu’elles ne passent pas en état d’arrêt forcé. Exemples comme Gmail et WhatsApp.

Débogage supplémentaire

FCM fournit une API REST pour interroger la dernière fois qu’un appareil a été connecté à FCM. Consultez la documentation Google suivante sur la façon d’obtenir cela. https://developers.google.com/instance-id/reference/server#get_information_about_app_instances