web-dev-qa-db-fra.com

Android FCM ne reçoit pas de notifications lorsque l'application est supprimée de l'arrière-plan

Le téléphone est OnePlus3T. La version OS Oxygène est 4.1.6. L'application reçoit une notification lorsque l'application est au premier plan ou en arrière-plan, mais en mémoire. Mais ne reçoit pas de notification lorsque l'application n'est pas en mémoire, c.-à-d. Qu'elle est extraite de la mémoire . La notification est reçue sur d'autres appareils dotés des versions Android OS 4.2, 5.1.1, 6.0.1, 7.1.1 L'application n'est pas dans la mémoire.

Veuillez suggérer quelque chose .. Merci d'avance.

6
Rajas47Ashtikar

J'ai également fait face au même problème.

Deux façons de résoudre ce problème 

1- Utilisation de la charge de notification

la charge de notification peut être envoyée en utilisant les balises data ou notification.

en utilisant la balise data 

 "data" {
  "title": "welcome",
  "description" :"to your app" ,
  "image" :"image_url",  
  "deeplink" :"deeplink",
   - -
  }

il va déclencher la méthode FirebaseMessagingService onMessageReceived . il ne fonctionnera pas sur certains périphériques, lorsqu'une application est en arrière-plan.

en utilisant notification

 "notification" {
   "title":"title",
   "description" : "description",
   "click_action" :"activity to be open"
   ..
}

cela est géré le système Android essaie de montrer la notification, cette méthode onMessageReceived de cas de votre FirebaseMessagingService ne sera pas appelée. la notification sera montrée même si l'application est en arrière-plan . il est géré par le système Android . plus d'infos

2- Activer le démarrage automatique dans les paramètres de l'appareil

lorsque vous envoyez une notification à l'aide de data et que l'application est tuée, la notification ne sera pas affichée . si vous observez le chat du journal, vous verrez 

W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.Android.c2dm.intent.RECEIVE pkg=com.cabipool (has extras) }

peut être résolu dans oneplus 3 setting -> Applications -> cliquez sur la roue dentée -> dernière option App select lance automatiquement l'application -> trouvez votre application, activez le commutateur

c'est le problème dans la plupart des appareils comme Vivo, Oppo, Xiaomi, Asus, un plus 3.

étapes pour activer le lancement automatique des applications très basé sur le fabricant du périphérique.

Mettre à jour:

Les options de démarrage automatique de OnePlus 3 et Android 8.0 ont été supprimées. Vous pouvez donc accéder à Paramètres> Batterie> Optimisation de la batterie> (menu Trois points dans le coin supérieur gauche) Optimisation avancée> Désactiver l'optimisation avancée. 

15
Rahul Devanavar

Cela ressemble à un problème du périphérique spécifique.

Pour vérifier, exécutez cette commande lorsque votre application est fermée (après un redémarrage ou après un balayage).

adb Shell dumpsys package MY-PACKAGE | grep stopped

si vous pouvez lire stopped=true, cela signifie que le fabricant de votre appareil a mis en œuvre un comportement non standard consistant en des applications "d'arrêt forcé" lorsqu'elles sont balayées.

force-stopping est très similaire à la désactivation de l'application jusqu'à ce que l'utilisateur l'ouvre à nouveau.
Lorsque l'application est dans cet état, de nombreuses autres API Android ne fonctionneront pas! (émissions, alarmes ..)

Si tel est le problème, veuillez contacter le fabricant et lui demander de réparer l'appareil!

1
Diego Giorgini