- 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.
Prérequis
Pour dépanner efficacement, rassemblez les éléments suivants :- Votre ID d’application OneSignal
- L’ID de message du push qui ne s’est pas affiché
- Les informations de l’utilisateur :
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.
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.
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 :-
Autoriser l’activité en arrière-plan :
- Paramètres > Applications > Votre application > Batterie > Autoriser l’activité en arrière-plan.
-
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.
-
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).
-
Activer le démarrage automatique pour l’application (sur certains appareils) :
- Paramètres > Applications > Votre application > Autorisations > Démarrage automatique > Activer.
-
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).
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.- FCM nécessite des ports ouverts vers : 5228, 5229 et 5230. Plus de détails : https://firebase.google.com/docs/cloud-messaging/concept-options
- APNS doit se connecter à : Port TCP 5223 et port TCP 443 ou 2197. Plus de détails : https://support.apple.com/en-us/HT203609
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
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 :- 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.
- 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.
- 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 :- Avoir les Google Play Services (Google Play Store) installés
- 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 appelerevent.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éthodeevent.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éthoderemoveAllDeliveredNotifications() 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.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, contactezsupport@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.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.