Sie haben zwei Möglichkeiten, die Zustellpriorität für Downstream-Nachrichten auf Android-Geräten festzulegen: „Normal“ und „Hoch“. So funktioniert die Zustellung von Nachrichten mit normaler und hoher Priorität:
Normale Priorität Dies ist die Standardpriorität für Daten- und Benachrichtigungsnachrichten. Nachrichten mit normaler Priorität werden sofort zugestellt, wenn sich das Gerät nicht im Ruhemodus befindet. Wenn sich das Gerät im Ruhemodus befindet, kann sich die Zustellung um verzögern, um den Akku zu schonen, bis das Gerät den Ruhemodus verlässt. Wählen Sie die normale Zustellpriorität für weniger zeitkritische Nachrichten wie Benachrichtigungen über neue E‑Mails, die Synchronisierung der Benutzeroberfläche oder die Synchronisierung von App-Daten im Hintergrund aus.
Hohe PrioritätFCM versucht, Nachrichten mit hoher Priorität sofort zuzustellen.Dazu kann FCM ein Gerät bei Bedarf aus dem Ruhemodus holen und eine begrenzte Verarbeitung durchführen (einschließlich sehr eingeschränkten Netzwerk zugriffs). Nachrichten mit hoher Priorität sollten in der Regel zu einer Nutzerinteraktion mit Ihrer App oder ihren Benachrichtigungen führen.
Zwischen Nachrichten mit hoher und normaler Priorität wählen
Nachrichten mit normaler Priorität eignen sich für allgemeine Updates. Wählen Sie jedoch „Hohe Priorität“ aus, wenn Sie eine sofortige Zustellung für dringende Angelegenheiten oder Aktionen sicherstellen müssen. Da die Zustellzeit für Nachrichten mit normaler Priorität durch den Ruhemodus beeinträchtigt werden kann, sollten Sie die meisten Ihrer für Nutzer sichtbaren Benachrichtigungen auf „Hohe Priorität“ festlegen, damit sie umgehend zugestellt werden. Benachrichtigungen wie Chatnachrichten, Probleme mit einem Konto oder Updates zur Essenslieferung sollten beispielsweise auf „Hohe Priorität“ festgelegt werden.
Nachrichtenverarbeitung für Nachrichten mit hoher und normaler Priorität
Für Nachrichten mit hoher und normaler Priorität, die auf einem Android-Gerät empfangen werden, werden einige Sekunden für die Verarbeitung der Nachrichtennutzlast im onMessageReceived-Handler gewährt. Für Nachrichten mit hoher Priorität wird etwas mehr Zeit zugewiesen als für Nachrichten mit normaler Priorität. Diese Zeit reicht in der Regel nur aus, um sofort eine Benachrichtigung zu rendern. Wenn Sie zusätzliche Aufgaben ausführen müssen, z. B. ein Bild aus dem Gerätespeicher laden oder Ihre Server aufrufen, um zusätzliche Inhalte zu erfassen, müssen Sie zusätzliche Schritte ausführen.
Die Methode onMessageReceived wird in einem separaten Worker-Thread aufgerufen. Als Best Practice sollten Sie die Nachrichtennutzlast verarbeiten und sofort eine Benachrichtigung in der Methode onMessageReceived anzeigen. Sie sollten keine
zusätzlichen asynchronen Netzwerkaufrufe ausführen oder die Nutzlast in einem separaten
Thread innerhalb der onMessageReceived Methode verarbeiten. Andernfalls kann es passieren, dass sich Ihre
Anwendung außerhalb eines
gültigen Prozesslebenszyklus
befindet, bevor die Nutzlast vollständig verarbeitet wurde. In diesem Fall kann es vorkommen, dass bestimmte gesendete FCM-Nachrichten zu verzögerten oder fehlenden Benachrichtigungen führen.
Wenn Sie zusätzliche Zeit für die Verarbeitung Ihrer Nachricht benötigen, z. B. um eine imageUrl abzurufen, die in Ihrer Nachrichtennutzlast enthalten ist, müssen Sie ein Konstrukt wie WorkManager oder einen Vordergrunddienst verwenden, um den Lebenszyklus der Anwendung zu verlängern. Beachten Sie die folgende Anleitung, wenn Sie die
Methode onMessageReceived überschreiben
, um zu prüfen, ob Ihre Benachrichtigungen vollständig verarbeitet wurden.
- Für Benachrichtigungen mit hoher Priorität: Starten Sie einen
beschleunigten Job
mit dem Android
WorkManager, um zu prüfen, ob Ihre Benachrichtigung mit hoher Priorität eine priorisierte Verarbeitungszeit erhält und die Benachrichtigung vollständig gerendert wird. Wenn Sie sich Sorgen machen, dass die Kontingente für beschleunigte Jobs aufgrund der FCM-Verarbeitung mit hoher Priorität erschöpft werden, ist das kein Problem. Es gibt eine kurze Ausnahme für beschleunigte Jobs, die unmittelbar nach dem Senden einer FCM-Nachricht mit hoher Priorität (onMessageReceived) geplant werden. - Für Benachrichtigungen mit normaler Priorität: Starten Sie
eine reguläre
WorkRequestmit dem AndroidWorkManagerstattdessen. So wird geprüft, ob die zusätzliche Arbeit, die für die Verarbeitung Ihrer Benachrichtigung erforderlich ist, schließlich verarbeitet wird, ohne dass eine priorisierte Verarbeitung verwendet wird und unnötige Probleme mit dem Akkuverbrauch entstehen.
Priorität für Nachrichten festlegen
Sie können Benachrichtigungen über das Admin SDK, die FCM REST API und die Firebase Konsole an Ihre Nutzer senden. Wenn Sie die Prioritätseinstellung über das Admin SDK und die FCM REST API ändern möchten, müssen Sie die JSON-Nutzlast der Nachricht aktualisieren. Im folgenden Codebeispiel sehen Sie, wie Sie die Priorität auf „Hoch“ festlegen. Für Benachrichtigungen, die über die Konsole gesendet werden, wird das Festlegen Android-spezifischer Benachrichtigungsfelder nicht unterstützt.
{
"message": {
"notification": {
"body": "Purchase exceeding $500 detected",
"title": "Credit card purchase"
},
"data": {
"purchaser": "Your child",
"items": "Gravity Defier Sneakers"
},
"android": {
"priority": "high"
},
"apns": {
"headers": {
"apns-priority": "5"
}
}
}
}
Benachrichtigungen mit hoher Priorität im Ruhemodus testen
Damit Ihre Benachrichtigungen mit hoher Priorität korrekt empfangen und verarbeitet werden, wenn sie von einem Nutzer empfangen werden, folgen Sie dieser Anleitung, um Ihre Benachrichtigungen zu testen:
- Versetzen Sie Ihr Gerät in den Ruhemodus. Folgen Sie dazu der Anleitung unter App mit dem Ruhemodus testen.
- Rufen Sie das FCM Registrierungstoken über Ihre App auf dem Test Gerät ab. Weitere Informationen zum Abrufen des Tokens finden Sie unter Testnachricht an eine Hintergrund-App senden.
- Sobald Sie das FCM Token haben, senden Sie Ihre Benachrichtigung mit hoher Priorität an das Testgerät. Verwenden Sie dazu Ihren FCM Code zum Senden von Benachrichtigungen oder einen cURL-Befehl mit Konfigurationsparametern, die Ihrer Benachrichtigung mit hoher Priorität entsprechen.
Herabstufung der Priorität von FCM mit hoher Priorität auf Android-Geräten
Nachrichten mit hoher Priorität auf Android-Geräten sind für zeitkritische, für Nutzer sichtbare Inhalte vorgesehen und sollten zu Benachrichtigungen für Nutzer führen. Wenn FCM ein Muster erkennt, bei dem Nachrichten nicht zu Benachrichtigungen für Nutzer führen, wird die Priorität Ihrer Nachrichten möglicherweise auf „Normal“ herabgestuft oder die Nachrichten werden zur Verarbeitung an die Google Play-Dienste weitergeleitet.
FCM verwendet 7 Tage des Nachrichtenverhaltens, um zu bestimmen, ob die Priorität von Nachrichten herabgestuft oder Nachrichten weitergeleitet werden sollen. Diese Entscheidung wird für jede Instanz Ihrer Anwendung unabhängig getroffen. Wenn als Reaktion auf Nachrichten mit hoher Priorität Benachrichtigungen angezeigt werden, die für den Nutzer sichtbar sind, sind Ihre zukünftigen Nachrichten mit hoher Priorität nicht betroffen.
Benachrichtigungen mit Google Play-Diensten weiterleiten
Benachrichtigungsnachrichten mit hoher Priorität, die bestimmte Kriterien erfüllen, werden von den Google Play-Diensten weitergeleitet, anstatt dass ihre Priorität herabgestuft wird. Das bedeutet, dass die Benachrichtigungen von den Google Play-Diensten im Namen der App angezeigt werden, ohne dass die App gestartet werden muss. So soll die Nutzererfahrung auf Android-Geräten insgesamt verbessert werden.
Beachten Sie, dass weitergeleitete Benachrichtigungsnachrichten Änderungen bei der Berichterstellung von Analysen zu empfangenen Nachrichten mit sich bringen:
- Damit Analysen für weitergeleitete Benachrichtigungen gemeldet werden können, muss Ihre App das FCM SDK Version 24.0.0 oder höher verwenden.
- Möglicherweise stellen Sie Verzögerungen oder Rückgänge bei der Anzahl der empfangenen Nachrichten im Vergleich zur Anzahl vor der Einführung weitergeleiteter Benachrichtigungen fest. Das liegt daran, dass Analysen für weitergeleitete Benachrichtigungen erst gemeldet werden, wenn Ihre App gestartet wird. Wenn die Benachrichtigung nicht dazu führt, dass die App geöffnet wird, werden sie möglicherweise gar nicht gemeldet.
Das Weiterleiten von Benachrichtigungsnachrichten auf diese Weise ist das Standardverhalten für Apps, die Android Q+ und die Google Play-Dienste Version 19054000 oder höher verwenden. Nachrichten, die über die HTTP v1 API gesendet werden, werden weitergeleitet. Nachrichten, die über die Firebase-Konsole oder Legacy-APIs gesendet werden, werden nicht weitergeleitet. Diese Funktion befindet sich derzeit in der Betaphase und kann sich noch ändern.
Wir empfehlen dringend, die Weiterleitung aktiviert zu lassen, da sie den Akku und den Arbeitsspeicher des Geräts schont. Sie können dieses Verhalten jedoch auf eine der folgenden Arten deaktivieren:
- Auf App-Ebene: Fügen Sie in Ihrem App-Manifest die Direktive
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>hinzu. - Auf App-Instanzebene: Legen Sie für die App-Instanz je nach Anwendungsfall
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>im UI-Ablauf für Ihre App fest. - Pro Nachricht: Legen Sie den Schlüssel
proxyim ObjektAndroidNotificationfür die Sendeanfrage aufDENYfest.
Herabstufung der Priorität von Nachrichten auf Android-Geräten messen
Einzelne Nachrichten Bei der Zustellung können Sie feststellen, ob die Priorität einer einzelnen Nachricht herabgestuft wurde oder nicht, indem Sie die zugestellte Priorität aus getPriority() mit der ursprünglichen Priorität aus getOriginalPriority() vergleichen.
Alle Nachrichten Die FCM Aggregate Delivery Data API kann melden, wie viel Prozent aller Ihrer Nachrichten an Android-Geräte herabgestuft werden. Einige Nachrichten werden möglicherweise in den Berichten zu aggregierten Daten ausgelassen, aber insgesamt sollten sie einen Überblick über die Raten der Herabstufung der Priorität von Nachrichten geben. Weitere Informationen und Beispielcode zum Abfragen der API finden Sie in unserem Artikel zu aggregierten Zustellungsdaten. Sie können die API auch über den API-Explorer erkunden.
Weitergeleitete Benachrichtigungen Weitergeleitete Benachrichtigungen werden in den aktuellen FCM- oder Google Analytics-Zustellungsmesswerten nicht berücksichtigt. Daher kann es zu einem Rückgang von bis zu 15% bei den Messwerten für die Zustellung von Benachrichtigungen kommen. Für Berichte zu weitergeleiteten Nachrichten verwenden Sie die FCM Aggregate Delivery Data API.
ProxyNotificationInsightPercentsmeldet den Prozentsatz der erfolgreich weitergeleiteten Benachrichtigungen sowie Details zu Nachrichten, die nicht erfolgreich weitergeleitet werden können.
Fehlerbehebung bei Benachrichtigungsverzögerungen
Prüfen Sie, ob Benachrichtigungen für Ihre App-Instanz aktiviert sind. Wenn der Nutzer die Benachrichtigungsberechtigung für Ihre App deaktiviert hat, werden keine Ihrer Benachrichtigungen gepostet. Daher wird die Priorität Ihrer Nachrichten herabgestuft. Sie sollten prüfen, ob Benachrichtigungen aktiviert sind, bevor Sie Nachrichten mit hoher Priorität an eine App-Instanz senden.
Vermeiden Sie zusätzliche Netzwerkaufrufe bei der Verarbeitung Ihrer Benachrichtigung. Da ein kleiner Teil der Android-Nutzer in Netzwerken mit hoher Latenz unterwegs ist, sollten Sie keine Verbindung zu Ihren Servern herstellen, bevor Sie eine Benachrichtigung anzeigen. Wenn Sie den Server vor Ablauf der zulässigen Verarbeitungszeit zurückrufen, kann das für Nutzer in Netzwerken mit hoher Latenz riskant sein.
Fügen Sie stattdessen den Benachrichtigungsinhalt in die FCM-Nachricht ein und zeigen Sie ihn sofort an. Wenn Sie zusätzliche In-App-Inhalte auf Android-Geräten synchronisieren müssen, können Sie mit WorkManager eine Aufgabe planen, die im Hintergrund ausgeführt wird.