Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Best Practices für die Verwaltung von FCM-Registrierungstoken

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Wenn Sie FCM-APIs verwenden, um Sendeanforderungen programmgesteuert zu erstellen, stellen Sie möglicherweise fest, dass Sie im Laufe der Zeit Ressourcen verschwenden, indem Sie Nachrichten an inaktive Geräte mit veralteten Registrierungstoken senden. Diese Situation kann sich auf die in der Firebase-Konsole gemeldeten Nachrichtenzustellungsdaten oder nach BigQuery exportierte Daten auswirken und sich in einem dramatischen (aber nicht wirklich gültigen) Rückgang der Zustellungsraten bemerkbar machen. In diesem Leitfaden werden einige Maßnahmen erläutert, die Sie ergreifen können, um ein effizientes Nachrichten-Targeting und gültige Übermittlungsberichte sicherzustellen.

Grundlegende Best Practices

Es gibt einige grundlegende Vorgehensweisen, die Sie in jeder App befolgen sollten, die FCM-APIs verwendet, um Sendeanforderungen programmgesteuert zu erstellen. Die wichtigsten Best Practices sind:

  • Speichern Sie Registrierungstoken auf Ihrem Server. Eine wichtige Rolle für den Server besteht darin, das Token jedes Clients zu verfolgen und eine aktualisierte Liste aktiver Token zu führen. Wir empfehlen dringend, einen Token-Zeitstempel in Ihren Code und Ihre Server zu implementieren und diesen Zeitstempel in regelmäßigen Abständen zu aktualisieren.
  • Entfernen Sie gespeicherte Token, die veraltet sind . Zusätzlich zum Entfernen von Token in offensichtlichen Fällen ungültiger Tokenantworten müssen Sie wahrscheinlich andere Anzeichen dafür überwachen, dass das Token veraltet ist. In diesem Leitfaden werden einige Ihrer Optionen erläutert, um dies zu erreichen.

Registrierungstoken abrufen und speichern

Beim ersten Start Ihrer App generiert das FCM SDK ein Registrierungstoken für die Client-App-Instanz. Dies ist das Token, das Sie in gezielte Sendeanforderungen von der API einschließen oder zu Themenabonnements hinzufügen müssen, um Themen gezielt anzusprechen.

Wie in unseren Leitfäden zur Client-Einrichtung angegeben, sollte Ihre App dieses Token beim ersten Start abrufen und zusammen mit einem Zeitstempel auf Ihrem App-Server speichern . Dieser Zeitstempel muss von Ihrem Code und Ihren Servern implementiert werden, da er nicht von FCM-SDKs für Sie bereitgestellt wird.

Außerdem ist es wichtig, das Token auf dem Server zu speichern und den Zeitstempel zu aktualisieren, wenn er sich ändert, z. B. wenn:

  • Die App wird auf einem neuen Gerät wiederhergestellt
  • Der Benutzer deinstalliert/installiert die App neu
  • Der Benutzer löscht App-Daten.

Ungültige Token-Antworten vom FCM-Back-End erkennen

Stellen Sie sicher, dass Sie ungültige Token-Antworten von FCM erkennen und reagieren Sie, indem Sie alle Registrierungstoken, von denen bekannt ist, dass sie ungültig sind, aus Ihrem System löschen. Bei der HTTP v1-API können diese Fehlermeldungen darauf hinweisen, dass Ihre Sendeanforderung auf veraltete oder ungültige Token abzielt:

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

Weitere Informationen finden Sie unter Fehlercodes .

Wenn Sie eine dieser Antworten für ein gezieltes Token erhalten, können Sie Ihren Datensatz dieses Tokens sicher löschen, da er nie wieder gültig sein wird. Beachten Sie jedoch, dass es immer noch Fälle geben wird, in denen ein Token tatsächlich ungültig ist, aber es gibt keinen Hinweis darauf. Beispielsweise kann das FCM-Backend manchmal nicht überprüfen, ob ein Gerät dauerhaft offline gegangen ist oder nicht.

Gewährleistung der Aktualität des Registrierungstokens

Die Bestimmung, ob ein Token frisch oder veraltet ist, ist nicht immer einfach. Um alle Fälle abzudecken, sollten Sie einen Schwellenwert festlegen, ab dem Sie Token als veraltet betrachten; unsere Empfehlung sind zwei Monate. Jeder Token, der älter als zwei Monate ist, ist wahrscheinlich ein inaktives Gerät; andernfalls hätte ein aktives Gerät sein Token aktualisiert.

Aktualisieren Sie Token regelmäßig

Wir empfehlen Ihnen, regelmäßig alle Registrierungstoken auf Ihrem Server abzurufen und zu aktualisieren. Dazu müssen Sie:

  • Fügen Sie Ihrer Client-App App-Logik hinzu, um das aktuelle Token mithilfe des entsprechenden API-Aufrufs abzurufen (z. B. token(completion): für Apple-Plattformen oder getToken() für Android), und senden Sie dann das aktuelle Token zur Speicherung an Ihren App-Server (mit timestamp ). Dies könnte ein monatlicher Job sein, der so konfiguriert ist, dass er alle Clients/Token abdeckt.
  • Fügen Sie Serverlogik hinzu, um den Zeitstempel des Tokens in regelmäßigen Abständen zu aktualisieren, unabhängig davon, ob sich das Token geändert hat oder nicht.

Unabhängig davon, welchem ​​Zeitmuster Sie folgen, stellen Sie sicher, dass Sie Token regelmäßig aktualisieren. Eine Aktualisierungshäufigkeit von einmal pro Monat stellt wahrscheinlich ein gutes Gleichgewicht zwischen der Belastung des Akkus und der Erkennung inaktiver Registrierungstoken her. Durch diese Aktualisierung stellen Sie auch sicher, dass jedes Gerät, das inaktiv wird, seine Registrierung aktualisiert, wenn es wieder aktiv wird. Es hat keinen Vorteil, die Aktualisierung häufiger als wöchentlich durchzuführen.

Abbestellen veralteter Token von Themen

Das Verwalten von Themenabonnements zum Entfernen veralteter Registrierungstoken ist eine weitere Überlegung. Es umfasst zwei Schritte:

  1. Ihre App sollte Themen einmal im Monat und/oder immer dann neu abonnieren, wenn sich das Registrierungstoken ändert. Dies bildet eine selbstheilende Lösung, bei der die Abonnements automatisch wieder angezeigt werden, wenn eine App wieder aktiv wird.
  2. Wenn eine App-Instanz für 2 Monate (oder Ihr eigenes Veraltungsfenster) inaktiv ist, sollten Sie sie mit dem Firebase Admin SDK von Themen kündigen, um die Token-/Themenzuordnung aus dem FCM-Back-End zu löschen.

Der Vorteil dieser beiden Schritte besteht darin, dass Ihre Fanouts schneller erfolgen, da weniger veraltete Token zum Auffächern vorhanden sind, und Ihre veralteten App-Instanzen werden automatisch neu abonniert, sobald sie wieder aktiv sind.

Liefererfolg messen

Im Allgemeinen empfehlen wir, Nachrichten auf der Grundlage von Aktionen auszurichten, die von aktiv genutzten App-Instanzen beobachtet oder erfasst werden. Dies ist besonders wichtig, wenn Sie regelmäßig Nachrichten an Themen mit vielen Abonnenten senden; Wenn ein Teil dieser Abonnenten tatsächlich inaktiv ist, können die Auswirkungen auf Ihre Lieferstatistiken im Laufe der Zeit erheblich sein.

Bevor Sie Nachrichten an ein Token richten, sollten Sie Folgendes berücksichtigen:

  • Weisen Google Analytics, in BigQuery erfasste Daten oder andere Tracking-Signale darauf hin, dass das Token aktiv ist?
  • Sind frühere Zustellversuche über einen bestimmten Zeitraum durchgehend fehlgeschlagen?
  • Wurde das Registrierungstoken auf Ihren Servern in den letzten zwei Monaten aktualisiert?
  • Meldet die FCM-Daten-API bei Android-Geräten einen hohen Prozentsatz an Nachrichtenübermittlungsfehlern aufgrund von droppedDeviceInactive ?

Weitere Informationen zur Zustellung finden Sie unter Grundlegendes zur Nachrichtenzustellung .