Firebase onMessageReceived wird nicht aufgerufen, wenn die App im Hintergrund läuft

Lesezeit: 5 Minuten

Firebase onMessageReceived wird nicht aufgerufen wenn die App im Hintergrund
Cyogenos

Ich arbeite mit Firebase und teste das Senden von Benachrichtigungen an meine App von meinem Server, während die App im Hintergrund läuft. Die Benachrichtigung wird erfolgreich gesendet, sie erscheint sogar im Benachrichtigungscenter des Geräts, aber wenn die Benachrichtigung erscheint oder wenn ich darauf klicke, wird die onMessageReceived-Methode in meinem FCMessagingService nie aufgerufen.

Als ich dies getestet habe, während meine App im Vordergrund war, wurde die Methode onMessageReceived aufgerufen und alles funktionierte einwandfrei. Das Problem tritt auf, wenn die App im Hintergrund läuft.

Ist das beabsichtigtes Verhalten oder gibt es eine Möglichkeit, dies zu beheben?

Hier ist mein FBMessagingService:

import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FBMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.i("PVL", "MESSAGE RECEIVED!!");
        if (remoteMessage.getNotification().getBody() != null) {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());
        } else {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));
        }
    }
}

  • Zusätzlich zum json-Body, wo ist Ihre onTokenRefresh Code? Hast du die abgeschlossen Android-Setup?

    – Kat

    21. Mai 2016 um 5:22 Uhr

  • Was meinst du mit dem JSON-Text der Benachrichtigung? Außerdem befindet sich mein onTokenRefresh-Code in meinem FirebaseInstanceID-Dienst.

    – Cyogenes

    21. Mai 2016 um 16:37 Uhr

  • Können Sie die von Ihnen gesendete Beispielnutzlast posten?

    – AL.

    23. Mai 2016 um 7:57 Uhr

  • verwenden istudy.io/android-push-notifications-using-firebase-fcm

    – YasirSE

    25. Juli 2016 um 12:10 Uhr

  • Sie können auch diesen Thread überprüfen stackoverflow.com/questions/39046270/…

    – Md. Sajedul Karim

    27. August 2016 um 9:24 Uhr


Antwort von Google Cloud empfohlen

  • Gibt es eine Möglichkeit die einzustellen click_action wenn ich die Firebase Notification Console verwende?

    – Nii Laryea

    31. Mai 2016 um 1:28 Uhr

  • ok, aber was ist, wenn die App beendet wird (kein Vorder- oder Hintergrund)?

    – michael

    15. Juni 2016 um 12:15 Uhr

  • Aber wie kann man die Benutzer-Löschbenachrichtigung deaktivieren? Denn wenn der Benutzer es verwirft, bedeutet dies, dass alle Daten übersprungen werden … Richtig?

    – Aleksey Timoshchenko

    1. September 2016 um 15:33 Uhr

  • Richtig! Wenn Sie also Benachrichtigungsnachrichten an Android senden, sollten die begleitenden Daten Daten sein, die das Benachrichtigungserlebnis verbessern. Es sollten keine App-kritischen Daten sein, verwenden Sie Datennachrichten für Daten, die die Anwendung benötigt, selbst wenn der Benutzer die Benachrichtigung verwirft.

    – Arthur Thompson

    2. September 2016 um 22:49 Uhr

  • Das ist nicht ganz richtig. Wenn die Nachricht nur Daten und keine Benachrichtigungsnutzlast enthält, wird die Nachricht IMMER an onMessageReceive übermittelt, ob die App im Vordergrund ist oder nicht.

    – JacksOnF1re

    15. August 2017 um 8:42 Uhr

  • Ich habe festgestellt, dass, wenn ich nur Datennachrichten sende, die aus dem Task-Manager gelöschte App keine Benachrichtigung erhalten kann. Ist dies ein beabsichtigtes Verhalten?

    – Prabhjot Singh

    28. Dezember 2016 um 6:26 Uhr

  • Das war für mich die Lösung, Nachrichten im Hintergrund zu empfangen!

    – Ray Hulha

    10. Januar 2017 um 15:01 Uhr

  • In Oreo, wenn die App beendet wird, wird onMessageReceived nicht aufgerufen. Ich habe nur Payload mit nur Daten. hast du ein update?

    – Samir Mangrolia

    27. Februar 2018 um 12:47 Uhr

  • Klappt wunderbar!

    – sk

    30. Juni 2018 um 1:27 Uhr

  • Ich liebe dich sehr für diese Antwort: p

    – Ahmad Arslan

    30. August 2018 um 12:07 Uhr

  • Danke!!! Ich habe ein paar Tage mit diesem Problem verloren und dieses hat mich gerettet.

    – Igor Janković

    24. Mai 2017 um 9:42 Uhr

  • wirklich die perfekte Lösung!

    – EduXavier

    24. Mai 2017 um 13:20 Uhr

  • Ich handhabe die Benachrichtigungsanzeigelogik in handleIntent(Intent intention) , aber wenn die App im Hintergrund ist, werden 2 Benachrichtigungen angezeigt, eine, die ich erstellt habe, und eine andere, die standardmäßig die gesamte Nachricht aus der Benachrichtigung enthält.

    – Joyson

    9. Juni 2017 um 15:33 Uhr

  • Genial, aber ich sehe keine Verwendung für OnMessageReceived in diesem Fall !?

    – Ala Abu Zarifa

    4. Oktober 2017 um 11:12 Uhr

  • Ich habe com.google.firebase:firebase-messaging:11.6.2 & handleIntent ist jetzt endgültig. Überprüfen Sie stackoverflow.com/questions/47308155/…

    – Ronak Poriya

    18. Dezember 2017 um 7:12 Uhr

  • Danke .. Ich habe meinen Servercode geändert und verwende “data” anstelle von “notification” und jetzt funktioniert es perfekt,

    – Mahesh Kavathiya

    2. Juni 2016 um 5:40 Uhr


  • @Koot funktioniert nur, wenn die App im Vordergrund ist, nicht im Hintergrund. Können Sie mir helfen, dieses Ereignis in beiden Fällen auszulösen?

    – Anant Schah

    16. Juli 2016 um 6:09 Uhr

  • @AnantShah wie sieht dein POST zum Firebase-Server aus?

    – Kut

    23. Juli 2016 um 10:01 Uhr

  • Hier gibt es eigentlich drei mögliche Fälle. 1) App im Vordergrund. 2) App im Hintergrund. 3) App läuft nicht. Wie Sie sagen, wird in den ersten beiden Fällen jedoch eine ‘Daten’-Nachricht empfangen nicht im dritten Fall, wenn die App nicht läuft. Um allen drei Fällen gerecht zu werden, müssen Sie das Feld „Benachrichtigung“ in der Nachricht festlegen. (Auch eine gute Idee, wenn Sie sowohl iOS- als auch Android-Clients unterstützen möchten)

    – Steve Moseley

    26. August 2016 um 2:29 Uhr

  • Auch wenn die App nicht läuft, bekomme ich immer noch eine Nachricht vom Server über die Funktion onmessagereceived. Ich stimme Ihnen zu, dass es besser ist, „Benachrichtigung“ zu verwenden, wenn Sie auch iOS unterstützen möchten.

    – Kut

    27. August 2016 um 7:20 Uhr

  • Danke .. Ich habe meinen Servercode geändert und verwende “data” anstelle von “notification” und jetzt funktioniert es perfekt,

    – Mahesh Kavathiya

    2. Juni 2016 um 5:40 Uhr


  • @Koot funktioniert nur, wenn die App im Vordergrund ist, nicht im Hintergrund. Können Sie mir helfen, dieses Ereignis in beiden Fällen auszulösen?

    – Anant Schah

    16. Juli 2016 um 6:09 Uhr

  • @AnantShah wie sieht dein POST zum Firebase-Server aus?

    – Kut

    23. Juli 2016 um 10:01 Uhr

  • Hier gibt es eigentlich drei mögliche Fälle. 1) App im Vordergrund. 2) App im Hintergrund. 3) App läuft nicht. Wie Sie sagen, wird in den ersten beiden Fällen jedoch eine ‘Daten’-Nachricht empfangen nicht im dritten Fall, wenn die App nicht läuft. Um allen drei Fällen gerecht zu werden, müssen Sie das Feld „Benachrichtigung“ in der Nachricht festlegen. (Auch eine gute Idee, wenn Sie sowohl iOS- als auch Android-Clients unterstützen möchten)

    – Steve Moseley

    26. August 2016 um 2:29 Uhr

  • Auch wenn die App nicht läuft, bekomme ich immer noch eine Nachricht vom Server über die Funktion onmessagereceived. Ich stimme Ihnen zu, dass es besser ist, „Benachrichtigung“ zu verwenden, wenn Sie auch iOS unterstützen möchten.

    – Kut

    27. August 2016 um 7:20 Uhr

  • Der wichtigste Teil für Personen, die unter Hintergrundproblemen leiden, ist das Entfernen der Eigenschaft „Benachrichtigung“ aus JSON, das vom Server gesendet wird. das löst das Problem. Vielen Dank.

    – Ramy M. Mousa

    21. April 2020 um 21:46 Uhr

964550cookie-checkFirebase onMessageReceived wird nicht aufgerufen, wenn die App im Hintergrund läuft

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy