Sie haben zwei Optionen zum Zuweisen der Zustellungspriorität für Downstream-Nachrichten unter Android: normale und hohe Priorität. 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 das Gerät nicht im Ruhemodus ist. Wenn sich das Gerät im Inaktivmodus befindet, kann die Zustellung verzögert werden, um den Akku zu schonen, bis das Gerät den Inaktivmodus verlässt. Für weniger zeitkritische Nachrichten wie Benachrichtigungen über neue E‑Mails, die Synchronisierung der Benutzeroberfläche oder die Synchronisierung von App-Daten im Hintergrund sollten Sie die normale Zustellungspriorität auswählen.
Hohe Priorität: FCM versucht, Nachrichten mit hoher Priorität sofort zuzustellen.Dazu kann FCM ein inaktives Gerät bei Bedarf aktivieren und eine begrenzte Verarbeitung durchführen (einschließlich sehr eingeschränkten Netzwerkzugriffs). Mitteilungen mit hoher Priorität sollten in der Regel zu Nutzerinteraktionen 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 „Hohe Priorität“ aus, wenn Sie sicherstellen müssen, dass dringende Angelegenheiten oder Aktionen sofort zugestellt werden. Da sich der Doze-Modus auf die Zustellzeit von Nachrichten mit normaler Priorität auswirken kann, sollten Sie die meisten Ihrer für Nutzer sichtbaren Benachrichtigungen auf „Hohe Priorität“ festlegen, damit sie rechtzeitig zugestellt werden. Benachrichtigungen wie Chatnachrichten, Probleme mit einem Konto oder Aktualisierungen bei der Essenslieferung sollten beispielsweise auf „Hohe Priorität“ festgelegt werden.
Nachrichtenverarbeitung für Nachrichten mit hoher und normaler Priorität
Sowohl für Benachrichtigungen mit hoher als auch mit normaler Priorität, die auf einem Android-Gerät empfangen werden, stehen mehrere Sekunden zur Verfügung, um die Nutzlast der Nachricht im onMessageReceived
-Handler zu verarbeiten. Für Benachrichtigungen, die eine asynchrone Verarbeitung der Nachrichtennutzlast erfordern, empfehlen wir die Verwendung eines Konstrukts wie WorkManager, da die für den onMessageReceived
-Handler vorgesehene Zeit überschritten werden könnte.
Für Nachrichten mit hoher Priorität können Sie mit dem Android WorkManager einen beschleunigten Job planen, damit diese Benachrichtigungen priorisiert und vollständig ausgeführt werden.
Für Nachrichten mit normaler Priorität können Sie mit dem Android WorkManager einen regulären OneTimeWorkRequest planen. So wird dafür gesorgt, dass die zusätzlich erforderlichen Arbeiten ohne priorisierte Verarbeitung ausgeführt werden.
Priorität für Nachrichten festlegen
Sie können Benachrichtigungen an Ihre Nutzer über Admin SDK, die FCM REST API und die Firebase-Konsole senden. Wenn Sie die Prioritätseinstellung über die 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 von Android-spezifischen Benachrichtigungsfeldern 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 Doze-Modus testen
Damit Ihre Benachrichtigungen mit hoher Priorität korrekt empfangen und verarbeitet werden, wenn ein Nutzer sie erhält, folgen Sie dieser Anleitung, um Ihre Benachrichtigungen zu testen:
- Versetzen Sie Ihr Gerät in den Inaktivmodus. Folgen Sie dazu der Anleitung unter App mit Inaktivmodus testen.
- Greifen Sie über Ihre App auf dem Testgerät auf Ihr FCM-Registrierungstoken zu. Weitere Informationen zum Zugriff auf das Token finden Sie unter Testnachricht an eine Hintergrund-App senden.
- Sobald Sie das FCM-Token haben, senden Sie Ihre Benachrichtigung mit hoher Priorität mit Ihrem FCM-Code zum Senden von Benachrichtigungen oder einem cURL-Befehl%3B%0A%7D)-,cURL,-curl%20%2DX) mit Konfigurationsparametern, die mit Ihrer Benachrichtigung mit hoher Priorität übereinstimmen, an das Testgerät.
Herabstufung von FCM mit hoher Priorität unter Android
Nachrichten mit hoher Priorität unter Android sind für zeitkritische, für Nutzer sichtbare Inhalte vorgesehen und sollten zu nutzerorientierten Benachrichtigungen führen. Wenn FCM ein Muster erkennt, bei dem Nachrichten nicht zu nutzerorientierten Benachrichtigungen führen, werden Ihre Nachrichten möglicherweise auf normale Priorität herabgestuft oder zur Verarbeitung durch die Google Play-Dienste delegiert.
Bei FCM wird das Nachrichtenverhalten der letzten 7 Tage berücksichtigt, um zu entscheiden, ob Nachrichten herabgestuft oder über einen Proxy gesendet werden sollen. Diese Entscheidung wird unabhängig für jede Instanz Ihrer Anwendung getroffen. Wenn Benachrichtigungen als Reaktion auf Nachrichten mit hoher Priorität so angezeigt werden, dass sie für den Nutzer sichtbar sind, sind Ihre zukünftigen Nachrichten mit hoher Priorität nicht betroffen.
Benachrichtigungsdelegierung mit Google Play-Diensten
Benachrichtigungen mit hoher Priorität, die bestimmte Kriterien erfüllen, werden über Google Play-Dienste weitergeleitet, anstatt dass ihre Priorität herabgestuft wird. Das bedeutet, dass die Benachrichtigungen von Google Play-Diensten im Namen der App angezeigt werden, ohne dass die App gestartet werden muss. Dies geschieht, um die allgemeine Nutzerfreundlichkeit auf Android-Geräten zu verbessern.
Durch die Verwendung von Proxy-Benachrichtigungen ändert sich die Art und Weise, wie Analysen zu empfangenen Nachrichten gemeldet werden:
- Damit Analysen für weitergeleitete Benachrichtigungen gemeldet werden, muss in Ihrer App das FCM SDK ab Version 24.0.0 verwendet werden.
- Möglicherweise stellen Sie Verzögerungen oder einen Rückgang bei der Anzahl der empfangenen Nachrichten im Vergleich zur Zeit vor der Einführung von Proxy-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 Benachrichtigungen über einen Proxy ist das Standardverhalten für Apps, die Android Q+ und Google Play-Dienste Version 19054000 oder höher verwenden. Nachrichten, die über die HTTP v1 API gesendet werden, werden per Proxy weitergeleitet. Nachrichten, die über die Firebase-Konsole oder Legacy-APIs gesendet werden, werden nicht per Proxy weitergeleitet. Diese Funktion befindet sich derzeit in der Betaphase und kann sich noch ändern.
Wir empfehlen jedoch dringend, die Delegierung aktiviert zu lassen, da sie sich positiv auf den Akku und den Speicher des Geräts auswirkt. Sie können dieses Verhalten auf folgende Weise 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. - Pro App-Instanz: Legen Sie
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
im UI-Ablauf für Ihre App fest, je nach Anwendungsfall. - Pro Nachricht: Setzen Sie den Schlüssel
proxy
im ObjektAndroidNotification
für die Sendeanfrage aufDENY
.
Herabstufung von Nachrichten unter Android messen
Einzelne Nachrichten. Bei der Zustellung können Sie anhand des Vergleichs der zugestellten Priorität (getPriority()) mit der ursprünglichen Priorität (getOriginalPriority()) feststellen, ob eine einzelne Nachricht herabgestuft wurde.
Alle Nachrichten Mit der FCM Aggregate Delivery Data API lässt sich ermitteln, wie viel Prozent aller Ihrer Nachrichten an Android-Nutzer eine niedrigere Priorität haben. Einige Nachrichten werden möglicherweise aus den Berichten mit aggregierten Daten ausgelassen. Insgesamt sollten sie jedoch einen globalen Überblick über die Raten für die Herabstufung 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 aufrufen.
Weitergeleitete Benachrichtigungen: Proxied notifications won't be counted in current FCM or GA delivery metrics, so you may experience a drop of up to 15% in notification delivery metrics. Wenn Sie Berichte zu weitergeleiteten Nachrichten erstellen möchten, verwenden Sie die FCM Aggregate Delivery Data API.
ProxyNotificationInsightPercents
gibt den Prozentsatz der erfolgreich weitergeleiteten Benachrichtigungen sowie Details zu Nachrichten an, 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 Berechtigung für Benachrichtigungen für Ihre App deaktiviert hat, werden keine Ihrer Benachrichtigungen gesendet. Ihre Nachrichten werden dann weniger priorisiert. Sie sollten prüfen, ob Benachrichtigungen aktiviert sind, bevor Sie Nachrichten mit hoher Priorität an eine Anwendungsinstanz 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 vor Ablauf der zulässigen Verarbeitungszeit eine Rückmeldung an den Server senden, kann dies für Nutzer in Netzwerken mit hoher Latenz riskant sein.
Stattdessen sollten Sie den Benachrichtigungsinhalt in die FCM-Nachricht einfügen und sofort anzeigen. Wenn Sie zusätzliche In-App-Inhalte auf Android synchronisieren müssen, können Sie mit WorkManager eine Aufgabe planen, die im Hintergrund ausgeführt wird.