Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Best Practices für die Verwaltung von FCM-Registrierungstoken

Wenn Sie FCM-APIs verwenden, um Sendeanforderungen programmgesteuert zu erstellen, werden Sie im Laufe der Zeit möglicherweise 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 die in BigQuery exportierten Daten auswirken und sich als dramatischer (aber nicht wirklich gültiger) Rückgang der Zustellraten bemerkbar machen. In diesem Leitfaden werden einige Maßnahmen erläutert, die Sie ergreifen können, um ein effizientes Nachrichten-Targeting und gültige Zustellungsberichte zu gewährleisten.

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, die Token jedes Clients zu verfolgen und eine aktualisierte Liste der aktiven Token zu führen. Wir empfehlen dringend, einen Token-Zeitstempel in Ihrem Code und Ihren Servern zu implementieren und diesen Zeitstempel in regelmäßigen Abständen zu aktualisieren.
  • Entfernen Sie gespeicherten Token , die veralten. Zusätzlich zum Entfernen von Token in offensichtlichen Fällen ungültiger Token-Antworten müssen Sie wahrscheinlich andere Anzeichen dafür überwachen, dass das Token veraltet ist. In diesem Leitfaden werden einige Ihrer Möglichkeiten beschrieben, 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 für das Targeting von Themen hinzufügen müssen.

Wie in unserem Client - Setup - Führer erwähnt, sollte Ihre Anwendung dieses Token bei der ersten Inbetriebnahme abrufen und speichern Sie es neben einem Zeitstempel auf Ihre App - Server. 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 bei jeder Änderung zu aktualisieren, beispielsweise 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)

Siehe Errorcodes für weitere Informationen.

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 ist. Beachten Sie jedoch, dass es immer noch Fälle geben wird, in denen ein Token tatsächlich ungültig ist, es jedoch keinen Hinweis darauf gibt. Beispielsweise kann das FCM-Back-End manchmal nicht überprüfen, ob ein Gerät dauerhaft offline gegangen ist.

Gewährleistung der Aktualität der Registrierungstoken

Es ist nicht immer einfach zu bestimmen, ob ein Token frisch oder veraltet ist. Um alle Fälle abzudecken, sollten Sie einen Schwellenwert festlegen, wenn Sie Token als veraltet betrachten. unsere Empfehlung beträgt zwei Monate. Jedes Token, das älter als zwei Monate ist, ist wahrscheinlich ein inaktives Gerät; ein aktives Gerät hätte andernfalls seinen Token aktualisiert.

Token regelmäßig aktualisieren

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

  • In - App - Logik in Ihrer Client - Anwendung die aktuellen Token mit dem entsprechenden API - Aufruf zum Abrufen (wie token(completion): für iOS oder getToken() für Android) und dann schicken Sie das aktuelle Token zu Ihrem Anwendungsserver für die Speicherung (mit Zeitstempel) . 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 vom Zeitmuster, dem Sie folgen, stellen Sie sicher, dass Sie die Token regelmäßig aktualisieren. Eine Aktualisierungshäufigkeit von einmal pro Monat bietet wahrscheinlich ein gutes Gleichgewicht zwischen Batteriebelastung und der Erkennung inaktiver Registrierungstoken. Durch diese Aktualisierung stellen Sie außerdem 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.

Veraltete Token von Themen abbestellen

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

  1. Ihre App sollte Themen einmal im Monat und/oder bei jeder Änderung des Registrierungstokens erneut abonnieren. Dies bildet eine selbstheilende Lösung, bei der die Abonnements automatisch wieder erscheinen, wenn eine App wieder aktiv wird.
  2. Wenn eine App - Instanz für 2 Monate im Leerlauf ist (oder Ihre eigenen staleness Fenster) sollten Sie es von Themen abmelden die mit Firebase Admin SDK das Token / Thema Mapping aus dem FCM - Backend zu löschen.

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

Liefererfolg messen

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

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

  • Zeigen Google Analytics, in BigQuery erfasste Daten oder andere Tracking-Signale an, dass das Token aktiv ist?
  • Sind frühere Zustellversuche über einen längeren Zeitraum hinweg konsequent fehlgeschlagen?
  • Wurde das Registrierungstoken in den letzten zwei Monaten auf Ihren Servern aktualisiert?
  • Bei Android - Geräten wird der FCM - droppedDeviceInactive Daten - API berichten über einen hohen Anteil an Nachrichtenübermittlungsfehler aufgrund droppedDeviceInactive ?

Weitere Informationen über die Anlieferung siehe Legendes Nachrichtenübermittlung .