Nachrichtenpriorität festlegen und verwalten

Sie haben zwei Möglichkeiten, Downstream-Nachrichten auf Android-Geräten eine Zustellpriorität zuzuweisen: „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 das Gerät nicht im Ruhemodus ist. Wenn sich das Gerät im Ruhemodus befindet, wird die Zustellung möglicherweise verzögert, um den Akku zu schonen, bis das Gerät den Ruhemodus beendet. Wählen Sie für weniger zeitkritische Nachrichten wie Benachrichtigungen zu neuen E-Mails, die Synchronisierung der Benutzeroberfläche oder die Synchronisierung von App-Daten im Hintergrund die normale Übermittlungspriorität aus.

  • Hohe Priorität: FCM versucht, Nachrichten mit hoher Priorität sofort zuzustellen.So kann FCM bei Bedarf ein inaktives Gerät wecken und einige eingeschränkte Verarbeitungen ausführen (einschließlich sehr eingeschränkten Netzwerkzugriffs). Mitteilungen mit hoher Priorität sollten in der Regel zu einer Nutzerinteraktion mit Ihrer App oder ihren Benachrichtigungen führen.

Nachrichten mit hoher und normaler Priorität

Nachrichten mit normaler Priorität eignen sich für allgemeine Informationen. Wählen Sie die hohe Priorität aus, wenn Sie eine sofortige Zustellung für dringende Angelegenheiten oder Maßnahmen benötigen. Da sich die Zustellungszeit für Nachrichten mit normaler Priorität durch den Ruhemodus beeinträchtigen lässt, sollten Sie die meisten für Nutzer sichtbaren Benachrichtigungen mit hoher Priorität versehen, damit sie zeitnah zugestellt werden. Benachrichtigungen wie Chatnachrichten, Probleme mit einem Konto oder Aktualisierungen bei der Lebensmittellieferung sollten beispielsweise eine hohe Priorität haben.

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, werden mehrere Sekunden für die Verarbeitung der Nachrichtenn im onMessageReceived-Handler benötigt. Für Benachrichtigungen, bei denen die Nachrichtennlast asynchron verarbeitet werden muss, empfehlen wir ein Konstrukt wie WorkManager, da die für den onMessageReceived-Handler zugewiesene Zeit möglicherweise überschritten wird.

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 regelmäßigen OneTimeWorkRequest planen. So wird sichergestellt, dass die zusätzlichen erforderlichen Arbeiten verarbeitet werden, ohne dass eine priorisierte Verarbeitung verwendet wird.

Priorität für Nachrichten festlegen

Sie können Benachrichtigungen an Ihre Nutzer senden, indem Sie Admin SDK, die FCM REST API und die Firebase Console verwenden. 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 wird gezeigt, wie Sie die Priorität auf „hoch“ festlegen. Für Benachrichtigungen, die über die Console gesendet werden, ist das Festlegen von Android-spezifischen Benachrichtigungsfeldern nicht möglich.

 {
  "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 von Nutzern korrekt empfangen und verarbeitet werden, folgen Sie dieser Anleitung, um Ihre Benachrichtigungen zu testen:

  1. Stellen Sie Ihr Gerät mithilfe der Anleitung unter App mit dem Ruhemodus testen in den Ruhemodus.
  2. Rufen Sie Ihr FCM-Registrierungstoken über Ihre App auf dem Testgerät ab. Weitere Informationen zum Zugriff auf das Token finden Sie unter Testnachricht an eine App im Hintergrund senden.
  3. Sobald Sie das FCM-Token haben, senden Sie die 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 zu Ihrer Benachrichtigung mit hoher Priorität passen, an das Testgerät.

Herabstufung von FCM mit hoher Priorität unter Android

Nachrichten mit hoher Priorität auf Android-Geräten sind für zeitkritische, für Nutzer sichtbare Inhalte gedacht und sollten zu Benachrichtigungen für Nutzer führen. Wenn FCM ein Muster erkennt, bei dem Nachrichten nicht zu Nutzerbenachrichtigungen führen, werden Ihre Nachrichten möglicherweise auf die normale Priorität herabgestuft oder an die Google Play-Dienste delegiert.

FCM verwendet 7 Tage Nachrichtenverhalten, um zu bestimmen, ob Nachrichten herabgestuft oder per Proxy gesendet werden sollen. Diese Entscheidung wird unabhängig für jede Instanz Ihrer Anwendung getroffen. Wenn Benachrichtigungen für Nachrichten mit hoher Priorität für den Nutzer sichtbar angezeigt werden, sind zukünftige Nachrichten mit hoher Priorität davon nicht betroffen.

Benachrichtigungsdelegierung mit Google Play-Diensten

Benachrichtigungen mit hoher Priorität, die bestimmte Kriterien erfüllen, werden von Google Play-Diensten geproxyt, anstatt ihre Priorität herabgesetzt zu werden. 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 Nutzerfreundlichkeit auf Android-Geräten insgesamt verbessert werden.

Durch Proxy-Benachrichtigungen werden Änderungen an der Berichterstellung für Analysen zu empfangenen Nachrichten vorgenommen:

  • Damit Analysen für proxiebasierte Benachrichtigungen erfasst werden können, muss in Ihrer App das FCM SDK Version 24.0.0 oder höher verwendet werden.
  • Möglicherweise kommt es zu Verzögerungen oder einem Rückgang bei der Anzahl der empfangenen Nachrichten im Vergleich zur Anzahl vor der Einführung von Proxy-Benachrichtigungen. Das liegt daran, dass Analysen für Proxy-Benachrichtigungen erst erfasst werden, wenn Ihre App gestartet wird. Wenn die Benachrichtigung nicht zum Öffnen der App führt, werden sie möglicherweise gar nicht erfasst.

Das Proxying 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 geproxyt. Nachrichten, die über die Firebase Console oder Legacy APIs gesendet werden, werden nicht geproxyt. Diese Funktion befindet sich derzeit in der Betaphase und kann sich noch ändern.

Wir empfehlen dringend, die Delegierung aktiviert zu lassen, da sie Vorteile für den Akku und den Arbeitsspeicher des Geräts bietet. Sie können sie aber auch auf folgende Arten deaktivieren:

  • Auf App-Ebene: Fügen Sie in Ihrem App-Manifest die Anweisung <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 fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> im UI-Flow für Ihre App fest, je nach Anwendungsfall.
  • Pro Nachricht: Legen Sie den Schlüssel proxy im AndroidNotification-Objekt für die Sendeanfrage auf DENY fest.

Depriorisierung von Nachrichten unter Android messen

  • Einzelne Nachrichten Bei der Zustellung können Sie feststellen, ob die Priorität einer einzelnen Nachricht herabgesetzt wurde, indem Sie die zugestellte Priorität von getPriority() mit der ursprünglichen Priorität von getOriginalPriority() vergleichen.

  • Alle Nachrichten Mit der FCM Aggregate Delivery Data API können Sie ermitteln, welcher Prozentsatz Ihrer Nachrichten an Android-Geräte herabgestuft wird. Einige Nachrichten werden möglicherweise aus den Berichten mit zusammengefassten Daten ausgeschlossen. Insgesamt sollten sie jedoch einen allgemeinen Überblick über die Raten der Nachrichtenpriorisierung geben. Weitere Informationen und Beispielcode zum Abfragen der API finden Sie in unserem Artikel zu aggregierten Übermittlungsdaten. Sie können sich die Daten auch im API Explorer ansehen.

  • Weitergeleitete Benachrichtigungen Proxy-Benachrichtigungen werden nicht in den aktuellen FCM- oder GA4-Übermittlungsmesswerten berücksichtigt. Daher kann es zu einem Rückgang der Übermittlungsmesswerte für Benachrichtigungen von bis zu 15% kommen. Verwenden Sie die FCM Aggregate Delivery Data API, um Berichte zu geproxyten Nachrichten zu erstellen. ProxyNotificationInsightPercents enthält den Prozentsatz der erfolgreich geproxyten Benachrichtigungen sowie Details zu Nachrichten, die nicht erfolgreich geproxyt werden können.

Fehlerbehebung bei Verzögerungen bei Benachrichtigungen

  • Achten Sie darauf, dass Benachrichtigungen für Ihre App-Instanz aktiviert sind. Wenn der Nutzer die Benachrichtigungsberechtigung für Ihre App deaktiviert hat, werden keine Benachrichtigungen gepostet. Ihre Nachrichten werden daher herabgestuft. 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 ist, sollten Sie keine Verbindung zu Ihren Servern herstellen, bevor eine Benachrichtigung angezeigt wird. Ein Rückruf an den Server vor Ablauf der zulässigen Verarbeitungszeit kann für Nutzer in Netzwerken mit hoher Latenz ein Risiko darstellen.

    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öchten, können Sie eine Aufgabe mit WorkManager planen, um dies im Hintergrund zu verarbeiten.