Firebase (FCM) -Benachrichtigungen werden nicht angezeigt, wenn die Android-App aus dem letzten Fach entfernt wurde

8

Ich sende Firebase-Benachrichtigungen über meinen eigenen Webservice mit PHP wie unten.

%Vor%

1.Nachrichten kommen, wenn App im Vordergrund und im Hintergrund ohne irgendwelche Probleme ist, aber wenn ich App aus dem letzten Tray entfernt, dann Benachrichtigungen nicht kommen, muss ich mit jeder Lösung dafür umgehen? (Wie Whatsup Benachrichtigungen zeigen alle Szenarien, selbst wenn ich diese App von den Einstellungen zwingt)

2.Nach Erhalt der Benachrichtigung von "onMessageReceived", wie diese Nachricht, Body-Inhalt an meine Aktivität / Fragmente zu übergeben?

3.In einigen Fällen möchte ich eine Benachrichtigung an alle senden, anstatt alle Token zum Array hinzuzufügen. jede andere Art und Weise zu behandeln wie "Senden an ALLES" so etwas?

%Vor%

Fehlgeschlagene Geräte: (Benachrichtigungen werden nicht angezeigt , nachdem sie aus dem letzten Fach entfernt wurden)

  • MI Redmi Anmerkung 2 (5.0.2 Lollipop)
  • Huawei Ehre 5c (5.1.1 Lollipop)

Erfolgreiche Geräte: (Benachrichtigungen werden angezeigt, nachdem sie aus dem letzten Fach entfernt wurden)

  • HTC eins X (4.2 Jelly Bean)
  • Samsung Galaxy Grand Prime (4.4 Kitkat)
Chandrahasan 30.06.2016, 16:32
quelle

3 Antworten

5
  

1. Benachrichtigungen kommen, wenn App im Vordergrund und Hintergrund ohne Probleme ist, aber wenn ich App aus dem letzten Fach dann entfernt habe   Benachrichtigungen kommen nicht, ich muss mit jeder Lösung umgehen   Dies ? (Wie Whatsup Benachrichtigungen zeigen alle Szenarien sogar ich   Erzwingen Sie diese App von den Einstellungen)

Gemäß Ihrem Code müssen Sie eine Null-Zeiger-Ausnahme auf remoteMessage.getNotification().getBody() erhalten, da Sie keine Benachrichtigung senden, stattdessen senden Sie Daten-Payload von Ihrer Curl-Anfrage. Laut meiner persönlichen Erfahrung ist das gerade erwähnte Problem vor allem in Android Kitkat oder unter Geräten zu sehen. Auf Lollipop oder über Firebase scheint Push zu funktionieren.

  

2.Nach Erhalt der Benachrichtigung von "onMessageReceived", wie diese Nachricht, Body-Inhalt an meine Aktivität / Fragmente zu übergeben?

Sie können eine Übertragung von onMessageReceived() durchführen und einen Braodcast-Empfänger in Ihrer Aktivität registrieren und die Daten in Ihrer Übertragungsabsicht senden. Beispielcode:

Aktivität

%Vor%

FirebaseMessagingService

%Vor%
  

3.In einigen Fällen möchte ich eine Benachrichtigung an alle senden, anstatt alle Token zum Array hinzuzufügen. jede andere Art zu behandeln wie "sende an ALLE"   so etwas?

In der Firebase-API gibt es nichts Besseres als "An ALLE senden". Die einzige Möglichkeit besteht darin, die Firebase-Konsole zu verwenden, die Probleme wie das weiße Symbol hat und die benutzerdefinierten Parameter Ihrer Benachrichtigung rippt.

>     
Jim Raynor 30.06.2016 18:49
quelle
1

Ich hatte Probleme mit FCM auf genauem Mi Phone und Huawei Telefon! Es stellte sich heraus, dass dies kein Problem mit FCM oder Ihrer App war, sondern auf ihrer Geräteebene.

Sie verfügen über App-Einstellungen auf Geräteebene, die Benachrichtigungen oder sogar die Aktivierungssperre deaktivieren, sodass onMessageReceived () nicht ausgelöst wird, wenn die Nachricht eintrifft. Nachdem ich die Einstellungen geändert habe (hauptsächlich Benachrichtigungen zulassen und die Akku-Optimierung für meine App deaktivieren), funktioniert alles gut!

Siehe ​​Firebase-Cloud-Messaging wurde nicht empfangen, wenn die App im Hintergrund läuft .

    
tingyik90 11.10.2016 16:21
quelle
-1

Dieses Problem benötigt eine Back-End-Implementierung. Lassen Sie mich diskutieren, wie ich diesen Mangel überwinde.

Wir kennen den Aktivitätszyklus. Nach dem Destroy-Aufruf rufe ich einen Dienst vom Back-End an, der mein Client-Token abmeldet. Alle eingehenden Nachrichten werden nun zur Zustellung in die Warteschlange gestellt, da das Token für den Zielmandanten nicht registriert ist.

Wenn ich also die Anwendung zurückbringe, rufe ich einen Backend-Service an, der meinen Kunden registriert. Das Back-End beginnt nun, Nachrichten aus der Warteschlange mit dem neuen Client-Token für mein Gerät zu senden.

    
kenix 27.01.2017 08:18
quelle