Ich arbeite gerade an einem Android-Projekt.
Bisher habe ich Firebase implementiert, insbesondere FirebaseInstanceIdService und FirebaseMessagingService:
%Vor%}
%Vor%Was ich erreichen möchte, ist folgendes:
Wenn die App im Hintergrund ist, möchte ich nur eine einfache Benachrichtigung in der Benachrichtigungszentrale haben. (Dies funktioniert bereits)
ABER, wenn die App im Vordergrund ist und gerade läuft, möchte ich ein anderes Verhalten haben: Ich möchte die Push-Benachrichtigung konsumieren und stattdessen eine Warnung anzeigen.
Aber meine Frage ist: Wie kann ich mit der laufenden Aktivität des Dienstes interagieren oder was ist der richtige Weg, um das beabsichtigte Verhalten zu erreichen? Das muss eine einfache Lösung sein, oder?
Vielen Dank im Voraus
schreibe diesen Code in die Anwendungsklasse
%Vor%Schreiben Sie diesen Code in jeder Methode onresume und in der Onpause-Methode set null
%Vor%Jetzt können Sie die Aktivitätsmethode aus der Serviceklasse
aufrufen %Vor%Wie kann ich mit der laufenden Aktivität des Service interagieren oder was ist der richtige Weg, um das beabsichtigte Verhalten zu erreichen?
Der beste Weg wäre einfach, Event Bus (zB GreenRobot oder lokale sendung ). Ihre Aktivität registriert den Listener in onResume()
(und meldet sich in onPause()
ab) und Ihr Dienst sendet einfach die Nachricht, wenn die Zeiten kommen.
Der Hauptvorteil besteht darin, dass Sie beide Elemente (Dienst und Aktivität) vollständig getrennt halten. Sie vermeiden auch die schlimmstmögliche Lösung - indem Sie die Methoden von Activity direkt aufrufen.
Um herauszufinden, ob Sie im Hintergrund sind oder nicht, empfiehlt es sich, die GreenRobot ActivityLifecycleCallbacks - es hat keinen Sinn, Aktivitäten zu erzwingen, um dies zu melden, da dies keinen Vorteil bringt davon.
versuche es mit:
Diese Methode überprüft alle laufenden Apps und gibt true oder false zurück, unabhängig davon, ob sich die aktuelle App im Hintergrund oder im Vordergrund befindet.
%Vor%Tags und Links android firebase firebase-cloud-messaging