Firebase Cloud Messaging-HTTP-Protokoll

In diesem Dokument finden Sie eine Referenz für die HTTP-Syntax, die zum Übergeben von Nachrichten von Ihrem App-Server an Client-Apps über Firebase Cloud Messaging verwendet wird.

Wenn Sie das alte HTTP-Protokoll verwenden, muss Ihr App-Server alle HTTP-Anfragen an diesen Endpunkt weiterleiten:

https://fcm.googleapis.com/fcm/send

Die verfügbaren Parameter und Optionen lassen sich in die folgenden Kategorien unterteilen:

Syntax der Downstream-Nachricht

Dieser Abschnitt enthält die Syntax zum Senden von nachgelagerten Nachrichten und zum Interpretieren von HTTP-Antworten von Firebase Cloud Messaging.

Downstream-HTTP-Nachrichten (JSON)

In der folgenden Tabelle sind die Ziele, Optionen und die Nutzlast für HTTP-JSON-Nachrichten aufgeführt.

Tabelle 1. Ziele, Optionen und Nutzlast für Downstream-HTTP-Nachrichten (JSON).

Parameter Nutzung Beschreibung
Ziele
to Optional, String

Dieser Parameter gibt den Empfänger einer Nachricht an.

Der Wert kann das Registrierungstoken eines Geräts, der Benachrichtigungsschlüssel einer Gerätegruppe oder ein einzelnes Thema sein (mit dem Präfix /topics/). Wenn Sie an mehrere Themen senden möchten, verwenden Sie den Parameter condition.

registration_ids
Optionales String-Array

Mit diesem Parameter wird der Empfänger einer Multicast-Nachricht angegeben, einer Nachricht, die an mehr als ein Registrierungstoken gesendet wird.

Der Wert sollte ein Array von Registrierungstokens sein, an die die Multicast-Nachricht gesendet werden soll. Das Array muss mindestens ein und höchstens 1.000 Registrierungstokens enthalten. Wenn Sie eine Nachricht an ein einzelnes Gerät senden möchten, verwenden Sie den Parameter to.

Multicast-Nachrichten sind nur im HTTP-JSON-Format zulässig.

condition Optional, String

Dieser Parameter gibt einen logischen Ausdruck von Bedingungen an, die das Nachrichtenziel bestimmen.

Unterstützte Bedingung: „Thema“, formatiert als „'deinThema' in topics“. Bei diesem Wert wird die Groß- und Kleinschreibung nicht berücksichtigt.

Unterstützte Operatoren: &&, ||. Pro Themennachricht werden maximal zwei Operatoren unterstützt.

notification_key
Eingestellt
Optional, String

Dieser Parameter ist nicht mehr verfügbar. Verwenden Sie stattdessen to, um die Empfänger der Nachricht anzugeben. Weitere Informationen zum Senden von Nachrichten an mehrere Geräte finden Sie in der Dokumentation für Ihre Plattform.

Optionen
collapse_key Optional, String

Mit diesem Parameter wird eine Gruppe von Nachrichten (z. B. mit collapse_key: "Updates Available") identifiziert, die minimiert werden kann, sodass nur die letzte Nachricht gesendet wird, wenn die Zustellung fortgesetzt werden kann. So soll verhindert werden, dass zu viele Nachrichten gesendet werden, wenn das Gerät wieder online ist oder aktiv wird.

Die Reihenfolge, in der Nachrichten gesendet werden, kann nicht garantiert werden.

Hinweis: Es sind jeweils maximal vier verschiedene Minimierungsschaltflächen zulässig. Das bedeutet, dass FCM gleichzeitig vier verschiedene Nachrichten pro Clientanwendung speichern kann. Wenn Sie diese Zahl überschreiten, kann nicht garantiert werden, welche vier Minimierungsschlüssel FCM beibehalten.

priority Optional, String

Legt die Priorität der Nachricht fest. Gültige Werte sind „normal“ und „hoch“. Auf Apple-Plattformen entsprechen diese den APN-Prioritäten 5 und 10.

Standardmäßig werden Benachrichtigungsnachrichten mit hoher Priorität und Datennachrichten mit normaler Priorität gesendet. Bei der normalen Priorität wird der Akkuverbrauch der Client-App optimiert. Diese Priorität sollte verwendet werden, es sei denn, eine sofortige Zustellung ist erforderlich. Bei Nachrichten mit normaler Priorität empfängt die App die Nachricht möglicherweise mit einer nicht angegebenen Verzögerung.

Wenn eine Nachricht mit hoher Priorität gesendet wird, wird sie sofort gesendet und die App kann eine Benachrichtigung anzeigen.

content_available Optional, boolesch

Verwenden Sie dieses Feld auf Apple-Plattformen, um content-available in der APNs-Nutzlast anzugeben. Wenn eine Benachrichtigung oder Nachricht gesendet wird und diese Option auf true festgelegt ist, wird eine inaktive Client-App geweckt und die Nachricht wird über APNs als stille Benachrichtigung und nicht über FCM gesendet. Die Zustellung von stillen Benachrichtigungen in APNs kann nicht garantiert werden und hängt von Faktoren wie dem Einschalten des Energiesparmodus oder dem erzwungenen Beenden der App ab. Unter Android wecken Datennachrichten die App standardmäßig auf. In Chrome wird die Funktion derzeit nicht unterstützt.

mutable_content Optional, boolescher JSON-Wert

Verwenden Sie dieses Feld auf Apple-Plattformen, um mutable-content in der APNs-Nutzlast anzugeben. Wenn eine Benachrichtigung gesendet wird und diese Einstellung auf true festgelegt ist, kann der Inhalt der Benachrichtigung mithilfe einer App-Erweiterung für den Benachrichtigungsdienst vor der Anzeige geändert werden. Dieser Parameter wird für Android-Geräte und im Web ignoriert.

time_to_live Optional, Zahl

Mit diesem Parameter wird angegeben, wie lange (in Sekunden) die Nachricht im FCM-Speicher aufbewahrt werden soll, wenn das Gerät offline ist. Die maximale Gültigkeitsdauer beträgt 4 Wochen und der Standardwert ist 4 Wochen. Weitere Informationen finden Sie unter Gültigkeitsdauer einer Nachricht festlegen.

restricted_package_
name
(nur Android)
Optional, String Dieser Parameter gibt den Paketnamen der Anwendung an, mit der die Registrierungstokens übereinstimmen müssen, damit die Nachricht empfangen werden kann.
dry_run Optional, boolescher Wert

Wenn dieser Parameter auf true gesetzt ist, können Entwickler eine Anfrage testen, ohne tatsächlich eine Nachricht zu senden.

Der Standardwert ist false.

Nutzlast
data Optional, Objekt

Dieser Parameter gibt die benutzerdefinierten Schlüssel/Wert-Paare der Nachrichtennutzlast an.

Zum Beispiel mit data:{"score":"3x1"}:

Wenn die Nachricht auf Apple-Plattformen über APNs gesendet wird, werden die benutzerdefinierten Datenfelder dargestellt. Wenn es über FCM gesendet wird, wird es in AppDelegate application:didReceiveRemoteNotification: als Dictionary mit Schlüssel/Wert-Paaren dargestellt.

Unter Android würde dies zu einem Intent-Extra namens score mit dem Stringwert 3x1 führen.

Der Schlüssel darf kein reserviertes Wort sein („from“, „message_type“ oder ein Wort, das mit „google“ oder „gcm“ beginnt). Verwenden Sie keine der in dieser Tabelle definierten Wörter (z. B. collapse_key).

Werte in Stringtypen werden empfohlen. Sie müssen Werte in Objekten oder anderen Datentypen, die keine Strings sind (z. B. Ganzzahlen oder Boolesche Werte), in Strings konvertieren.

notification Optional, Objekt Dieser Parameter gibt die vordefinierten, für Nutzer sichtbaren Schlüssel/Wert-Paare der Benachrichtigungsnutzlast an. Weitere Informationen finden Sie unter „Unterstützung für Benachrichtigungsnutzlast“. Weitere Informationen zu den Optionen für Benachrichtigungs- und Datennachrichten finden Sie unter Nachrichtentypen. Wenn eine Benachrichtigungsnutzlast angegeben ist oder die Option content_available für eine Nachricht an ein Apple-Gerät auf true gesetzt ist, wird die Nachricht über APNs gesendet. Andernfalls wird sie über FCM gesendet.

Unterstützung für Benachrichtigungsnutzlasten

In den folgenden Tabellen sind die vordefinierten Schlüssel aufgeführt, die zum Erstellen von Benachrichtigungsnachrichten für iOS und Android verfügbar sind.

Tabelle 2a: iOS – Schlüssel für Benachrichtigungsnachrichten

Parameter Nutzung Beschreibung
title Optional, String

Der Titel der Benachrichtigung.

Auf Smartphones und Tablets ist dieses Feld nicht sichtbar.

body Optionaler String

Der Text der Benachrichtigung.

sound Optional, String

Der Ton, der abgespielt wird, wenn das Gerät die Benachrichtigung erhält.

String, der Sounddateien im Haupt-Bundle der Clientanwendung oder im Ordner Library/Sounds des Datencontainers der Anwendung angibt. Weitere Informationen finden Sie in der iOS Developer Library.

badge Optional, String

Der Wert des Logos auf dem App-Symbol auf dem Startbildschirm.

Wenn keine Angabe erfolgt, wird das Logo nicht geändert.

Wenn Sie 0 festlegen, wird das Kennzeichen entfernt.

click_action Optional, String

Die Aktion, die mit einem Nutzerklick auf die Benachrichtigung verknüpft ist.

Entspricht category in der APNs-Nutzlast.

subtitle Optional, String

Der Untertitel der Benachrichtigung.

body_loc_key Optional, String

Der Schlüssel für den Textkörper in den Stringressourcen der App, mit dem der Textkörper in die aktuelle Lokalisierung des Nutzers übersetzt wird.

Entspricht loc-key in der APNs-Nutzlast.

Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren.

body_loc_args Optional, JSON-Array als String

Variable Stringwerte, die anstelle der Formatanweisungen in body_loc_key verwendet werden, um den Textkörper an die aktuelle Lokalisierung des Nutzers anzupassen.

Entspricht loc-args in der APNs-Nutzlast.

Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren.

title_loc_key Optional, String

Der Schlüssel für den Titelstring in den Stringressourcen der App, mit dem der Titeltext in die aktuelle Lokalisierung des Nutzers übersetzt wird.

Entspricht title-loc-key in der APNs-Nutzlast.

Weitere Informationen finden Sie unter Referenz für Nutzlastschlüssel und Inhalte von Remotebenachrichtigungen lokalisieren.

title_loc_args Optional, JSON-Array als String

Variable Stringwerte, die anstelle der Formatanweisungen in title_loc_key verwendet werden, um den Titeltext an die aktuelle Lokalisierung des Nutzers anzupassen.

Entspricht title-loc-args in der APNs-Nutzlast.

Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren.

Tabelle 2b: Android – Schlüssel für Benachrichtigungsnachrichten

Parameter Nutzung Beschreibung
title Optional, String

Der Titel der Benachrichtigung.

body Optional, String

Der Text der Benachrichtigung.

android_channel_id Optional, String

Die Kanal-ID der Benachrichtigung (neu in Android O).

Die App muss einen Kanal mit dieser Kanal-ID erstellen, bevor Benachrichtigungen mit dieser Kanal-ID empfangen werden.

Wenn du diese Kanal-ID nicht in der Anfrage sendest oder die angegebene Kanal-ID noch nicht von der App erstellt wurde, verwendet FCM die im App-Manifest angegebene Kanal-ID.

icon Optional, String

Das Symbol der Benachrichtigung.

Legt das Benachrichtigungssymbol für die Drawable-Ressource myicon auf myicon fest. Wenn Sie diesen Schlüssel nicht in der Anfrage senden, wird in FCM das im App-Manifest angegebene Launcher-Symbol angezeigt.

sound Optionaler String

Der Ton, der abgespielt wird, wenn das Gerät die Benachrichtigung erhält.

Unterstützt "default" oder den Dateinamen einer in der Anwendung gebündelten Audioressource. Sounddateien müssen in /res/raw/ gespeichert sein.

tag Optional, String

Mit dieser Kennung werden vorhandene Benachrichtigungen in der Benachrichtigungsleiste ersetzt.

Wenn nicht angegeben, wird für jede Anfrage eine neue Benachrichtigung erstellt.

Wenn angegeben und bereits eine Benachrichtigung mit demselben Tag angezeigt wird, ersetzt die neue Benachrichtigung die vorhandene Benachrichtigung auf der Benachrichtigungsleiste.

color Optionaler String

Die Symbolfarbe der Benachrichtigung im #rrggbb-Format.

click_action Optional, String

Die Aktion, die mit einem Nutzerklick auf die Benachrichtigung verknüpft ist.

Wenn angegeben, wird eine Aktivität mit einem übereinstimmenden Intent-Filter gestartet, wenn ein Nutzer auf die Benachrichtigung klickt.

body_loc_key Optional, String

Der Schlüssel für den Textkörper in den Stringressourcen der App, mit dem der Textkörper in die aktuelle Lokalisierung des Nutzers übersetzt wird.

Weitere Informationen finden Sie unter Stringressourcen.

body_loc_args Optional, JSON-Array als String

Variable Stringwerte, die anstelle der Formatspezifizierer in body_loc_key verwendet werden, um den Textkörper für die aktuelle Lokalisierung des Nutzers zu lokalisieren.

Weitere Informationen finden Sie unter Formatierung und Stil.

title_loc_key Optional, String

Der Schlüssel für den Titelstring in den Stringressourcen der App, mit dem der Titeltext in die aktuelle Lokalisierung des Nutzers übersetzt wird.

Weitere Informationen finden Sie unter Stringressourcen.

title_loc_args Optional, JSON-Array als String

Variable Stringwerte, die anstelle der Formatanweisungen in title_loc_key verwendet werden, um den Titeltext an die aktuelle Lokalisierung des Nutzers anzupassen.

Weitere Informationen finden Sie unter Formatierung und Stil.

Tabelle 2c. Web (JavaScript): Schlüssel für Benachrichtigungsnachrichten

Parameter Nutzung Beschreibung
title Optional, String

Der Titel der Benachrichtigung.

body Optional, String

Der Text der Benachrichtigung.

icon Optionaler String

Die URL, die für das Benachrichtigungssymbol verwendet werden soll.

click_action Optional, String

Die mit einem Nutzerklick verknüpfte Aktion auf die Benachrichtigung.

Für alle URL-Werte ist HTTPS erforderlich.

Downstream-HTTP-Nachrichten (Nur-Text)

In der folgenden Tabelle ist die Syntax für Ziele, Optionen und Nutzlast in Downstream-HTTP-Nachrichten in Klartext aufgeführt.

Tabelle 3 Ziele, Optionen und Nutzlast für Downstream-HTTP-Nachrichten im Klartext.

Parameter Nutzung Beschreibung
Ziele
registration_id Erforderlich, String

Mit diesem Parameter werden die Client-Apps (Registrierungstokens) angegeben, die die Nachricht empfangen.

Multicast-Messaging (Senden an mehrere Registrierungstokens) ist nur im HTTP-JSON-Format zulässig.

Optionen
collapse_key Optional, String Weitere Informationen finden Sie in Tabelle 1.
time_to_live Optional, Zahl Weitere Informationen finden Sie in Tabelle 1.
restricted_package_name Optional, String Weitere Informationen finden Sie in Tabelle 1.
dry_run Optional, boolesch Weitere Informationen finden Sie in Tabelle 1.
Nutzlast
data.<key> Optional, String

Mit diesem Parameter werden die Schlüssel/Wert-Paare der Nutzlast der Nachricht angegeben. Die Anzahl der Schlüssel/Wert-Parameter ist nicht begrenzt, die Gesamtgröße der Nachricht ist jedoch auf 4.096 Byte beschränkt.

Unter Android würde "data.score"."3x1" beispielsweise zu einem Intent-Extra namens score mit dem Stringwert 3x1 führen.

Der Schlüssel darf kein reserviertes Wort sein („from“, „message_type“ oder ein Wort, das mit „google“ oder „gcm“ beginnt). Verwenden Sie keine der in dieser Tabelle definierten Wörter (z. B. collapse_key).

Antwort auf eine Downstream-Nachricht interpretieren

Der App-Server sollte sowohl den Antwortheader als auch den Antworttext der Nachricht auswerten, um die von FCM gesendete Antwort zu interpretieren. In der folgenden Tabelle werden die möglichen Antworten beschrieben.

Tabelle 4 Antwortheader der Downstream-HTTP-Nachricht.

Antwort Beschreibung
200 Nachricht wurde erfolgreich verarbeitet. Der Antworttext enthält weitere Details zum Nachrichtenstatus. Das Format hängt davon ab, ob die Anfrage im JSON- oder Nur-Text-Format war. Weitere Informationen finden Sie in Tabelle 5.
400 Gilt nur für JSON-Anfragen. Gibt an, dass die Anfrage nicht als JSON geparst werden konnte oder ungültige Felder enthält (z. B. Übergabe eines Strings, in dem eine Zahl erwartet wurde). Die genaue Fehlerursache wird in der Antwort beschrieben. Das Problem sollte behoben werden, bevor die Anfrage noch einmal ausgeführt werden kann.
401 Beim Authentifizieren des Absenderkontos ist ein Fehler aufgetreten.
5xx Fehler im Bereich 500–599 (z. B. 500 oder 503) weisen darauf hin, dass beim Versuch, die Anfrage zu verarbeiten, ein interner Fehler im FCM-Backend aufgetreten ist oder dass der Server vorübergehend nicht verfügbar ist (z. B. aufgrund von Zeitüberschreitungen). Der Absender muss es später noch einmal versuchen und dabei jeden in der Antwort enthaltenen Retry-After-Header berücksichtigen. Anwendungsserver müssen einen exponentiellen Backoff implementieren.

In der folgenden Tabelle sind die Felder in einem Downstream-Nachrichten-Antworttext (JSON) aufgeführt.

Tabelle 5 Antworttext der Downstream-HTTP-Nachricht (JSON).

Parameter Nutzung Beschreibung
multicast_id Erforderlich, Zahl Eine eindeutige ID (Nummer), die die Multicast-Nachricht identifiziert.
success Erforderlich, Zahl Anzahl der Nachrichten, die ohne Fehler verarbeitet wurden.
failure Erforderlich, Zahl Anzahl der Nachrichten, die nicht verarbeitet werden konnten.
results Erforderliches Array von Objekten Array von Objekten, die den Status der verarbeiteten Nachrichten darstellen. Die Objekte werden in derselben Reihenfolge wie in der Anfrage aufgeführt. Das heißt, für jede Registrierungs-ID in der Anfrage wird das Ergebnis in der Antwort unter derselben Indexposition aufgeführt.
  • message_id: String, der eine eindeutige ID für jede erfolgreich verarbeitete Nachricht angibt.
  • error: String, der den Fehler angibt, der bei der Verarbeitung der Nachricht für den Empfänger aufgetreten ist. Die möglichen Werte finden Sie in Tabelle 9.

Tabelle 6 HTTP-Antworttext der Themennachricht (JSON).

Parameter Nutzung Beschreibung
message_id Optional, Zahl Die Nachrichten-ID des Themas, wenn FCM die Anfrage erfolgreich erhalten hat und versucht, sie an alle abonnierten Geräte zu senden.
error Optional, String Fehler, der bei der Verarbeitung der Nachricht aufgetreten ist. Die möglichen Werte finden Sie in Tabelle 9.

Tabelle 7 Erfolgreiche Antwort für den Antworttext der nachgelagerten HTTP-Nachricht (Nur-Text).

Parameter Nutzung Beschreibung
id Erforderlich, String Dieser Parameter gibt die eindeutige Nachrichten-ID FCM an, die erfolgreich verarbeitet wurde.
registration_id Optional, String Dieser Parameter gibt das Registrierungstoken für die Client-App an, für die die Nachricht verarbeitet und gesendet wurde.

Tabelle 8. Fehlerantwort für den Antworttext der Downstream-HTTP-Nachricht (Nur-Text).

Parameter Nutzung Beschreibung
Error Erforderlich, String Dieser Parameter gibt den Fehlerwert an, der bei der Verarbeitung der Nachricht für den Empfänger aufgetreten ist. Weitere Informationen finden Sie in Tabelle 9.

Fehlerantwortcodes für Downstream-Nachrichten

In der folgenden Tabelle sind die Fehlerantwortcodes für Downstream-Nachrichten aufgeführt.

Tabelle 9 Fehlerantwortcodes für Downstream-Nachrichten

Fehler HTTP-Code Empfohlene Maßnahme
Fehlendes Registrierungstoken 200 + error:MissingRegistration Prüfen Sie, ob die Anfrage ein Registrierungstoken enthält (im registration_id in einer Nur-Text-Nachricht oder im Feld to oder registration_ids in JSON).
Ungültiges Registrierungstoken 200 + Fehler:InvalidRegistration Prüfe das Format des Registrierungstokens, das du an den Server übergibst. Es muss mit dem Registrierungstoken übereinstimmen, das die Client-App bei der Registrierung bei Firebase Notifications erhält. Fügen Sie keine zusätzlichen Zeichen hinzu und schneiden Sie sie nicht ab.
Nicht registriertes Gerät 200 + error:NotRegistered Ein vorhandenes Registrierungstoken kann in einer Reihe von Fällen ungültig werden, z. B.:
  • Wenn die Client-App die Registrierung bei FCM aufhebt.
  • Wenn die Client-App automatisch abgemeldet wird, was passieren kann, wenn der Nutzer die Anwendung deinstalliert. Beispiel: Unter iOS hat der APNs-Feedbackdienst das APNs-Token als ungültig gemeldet.
  • Wenn das Registrierungstoken abläuft (z. B. wenn Google entscheidet, Registrierungstokens zu aktualisieren, oder das APNs-Token für iOS-Geräte abgelaufen ist).
  • Die Client-App wurde aktualisiert, aber die neue Version ist nicht für den Empfang von Nachrichten konfiguriert.
In all diesen Fällen müssen Sie dieses Registrierungstoken vom App-Server entfernen und es nicht mehr zum Senden von Nachrichten verwenden.
Ungültiger Paketname 200 + Fehler:InvalidPackageName Prüfen Sie, ob die Nachricht an ein Registrierungstoken adressiert ist, dessen Paketname mit dem in der Anfrage übergebenen Wert übereinstimmt.
Authentifizierungsfehler 401 Das Absenderkonto, das zum Senden einer Nachricht verwendet wurde, konnte nicht authentifiziert werden. Mögliche Ursachen:
  • Der Autorisierungsheader fehlt in der HTTP-Anfrage oder hat eine ungültige Syntax.
  • Das Firebase-Projekt, zu dem der angegebene Serverschlüssel gehört, ist falsch.
  • Nur Legacy-Serverschlüssel: Die Anfrage stammt von einem Server, der nicht auf der Zulassungsliste der Serverschlüssel-IP-Adressen steht.
Prüfe, ob das Token, das du im Authentifizierungsheader sendest, der richtige Serverschlüssel ist, der mit deinem Projekt verknüpft ist. Weitere Informationen finden Sie unter Gültigkeit eines Serverschlüssels prüfen . Wenn Sie einen alten Serverschlüssel verwenden, sollten Sie auf einen neuen Schlüssel ohne IP-Einschränkungen umstellen. Weitere Informationen finden Sie unter Legacy-Serverschlüssel migrieren.
Nicht übereinstimmender Absender 200 + Fehler:MismatchSenderId Ein Registrierungstoken ist mit einer bestimmten Gruppe von Absendern verknüpft. Wenn eine Client-App für FCM registriert wird, muss sie angeben, welche Absender Nachrichten senden dürfen. Sie sollten eine dieser Absender-IDs verwenden, wenn Sie Nachrichten an die Client-App senden. Wenn Sie zu einem anderen Absender wechseln, funktionieren die vorhandenen Registrierungstokens nicht.
Ungültiges JSON-Format 400 Prüfen Sie, ob die JSON-Nachricht richtig formatiert ist und gültige Felder enthält. Achten Sie beispielsweise darauf, dass der richtige Datentyp übergeben wird.
Ungültige Parameter 400 + error:InvalidParameters Prüfen Sie, ob die angegebenen Parameter den richtigen Namen und Typ haben.
Nachricht zu groß 200 + error:MessageTooBig Prüfen Sie, ob die Gesamtgröße der Nutzlastdaten in einer Nachricht die FCM-Grenzwerte nicht überschreitet: 4.096 Byte für die meisten Nachrichten oder 2.048 Byte bei Nachrichten an Themen. Dies umfasst sowohl die Schlüssel als auch die Werte.
Ungültiger Datenschlüssel 200 + Fehler:
InvalidDataKey
Prüfen Sie, ob die Nutzlastdaten keinen Schlüssel enthalten (z. B. from, gcm oder einen Wert mit dem Präfix google), der intern von FCM verwendet wird. Einige Wörter (z. B. collapse_key) werden auch von FCM verwendet, sind aber in der Nutzlast zulässig. In diesem Fall wird der Nutzlastwert vom FCM-Wert überschrieben.
Ungültige Gültigkeitsdauer 200 + error:InvalidTtl Prüfen Sie, ob der in time_to_live verwendete Wert eine Ganzzahl ist, die eine Dauer in Sekunden zwischen 0 und 2.419.200 (4 Wochen) darstellt.
Zeitlimit 5xx- oder 200+-Fehler: Nicht verfügbar

Der Server konnte die Anfrage nicht rechtzeitig verarbeiten. Wiederholen Sie dieselbe Anfrage. Beachten Sie dabei jedoch Folgendes:

  • Beachten Sie den Retry-After-Header, wenn er in der Antwort des Verbindungsservers FCM enthalten ist.
  • Implementieren Sie einen exponentiellen Backoff in Ihrem Wiederholungsmechanismus. Wenn Sie beispielsweise eine Sekunde vor dem ersten Versuch gewartet haben, warten Sie mindestens zwei Sekunden vor dem nächsten, dann vier Sekunden und so weiter. Wenn Sie mehrere Nachrichten senden, verzögern Sie jede Nachricht unabhängig voneinander um eine zusätzliche zufällige Zeitspanne, um zu vermeiden, dass eine neue Anfrage für alle Nachrichten gleichzeitig gesendet wird.

Absender, die Probleme verursachen, laufen Gefahr, auf die Sperrliste gesetzt zu werden.

Interner Serverfehler 500 oder 200 + error:InternalServerError Beim Verarbeiten der Anfrage ist ein Fehler aufgetreten. Sie können dieselbe Anfrage nach den unter „Zeitüberschreitung“ aufgeführten Anforderungen wiederholen (siehe Zeile oben). Wenn der Fehler weiterhin auftritt, wenden Sie sich bitte an den Firebase-Support.
Gerätenachrichtenrate überschritten 200 + Fehler:
DeviceMessageRate
Exceeded

Die Rate der Nachrichten an ein bestimmtes Gerät ist zu hoch. Wenn eine Apple-App Nachrichten mit einer Rate sendet, die die APN-Limits überschreitet, wird möglicherweise diese Fehlermeldung ausgegeben.

Reduzieren Sie die Anzahl der an dieses Gerät gesendeten Nachrichten und verwenden Sie den exponentiellen Backoff, um den Sendeversuch zu wiederholen.

Nachrichtenrate für Themen überschritten 200 + Fehler:
TopicsMessageRate
Überschritten
Die Anzahl der Nachrichten an Abonnenten eines bestimmten Themas ist zu hoch. Verringern Sie die Anzahl der zu diesem Thema gesendeten Nachrichten und verwenden Sie den exponentiellen Backoff, um das Senden noch einmal zu versuchen.
Ungültige APNs-Anmeldedaten 200 + Fehler:
InvalidApnsCredential
Eine Nachricht, die an ein Apple-Gerät gesendet werden sollte, konnte nicht gesendet werden, da der erforderliche APNs-Authentifizierungsschlüssel nicht hochgeladen wurde oder abgelaufen ist. Prüfen Sie die Gültigkeit Ihrer Entwicklungs- und Produktionsanmeldedaten.

Verwaltung von Gerätegruppen

In der folgenden Tabelle sind die Schlüssel zum Erstellen von Gerätegruppen sowie zum Hinzufügen und Entfernen von Mitgliedern aufgeführt. Weitere Informationen finden Sie im Leitfaden für Ihre Plattform: iOS + oder Android.

Tabelle 10. Schlüssel zur Verwaltung von Gerätegruppen.

Parameter Nutzung Beschreibung
operation Erforderlich, String Der auszuführende Vorgang. Gültige Werte sind create, add und remove.
notification_key_name Erforderlich, String Der benutzerdefinierte Name der zu erstellenden oder zu ändernden Gerätegruppe.
notification_key Erforderlich (außer für den create-Vorgang, String Eindeutige Kennung der Gerätegruppe. Dieser Wert wird in der Antwort für einen erfolgreichen create-Vorgang zurückgegeben und ist für alle nachfolgenden Vorgänge auf der Gerätegruppe erforderlich.
registration_ids Erforderliches String-Array Die Gerätetokens, die hinzugefügt oder entfernt werden sollen. Wenn Sie alle vorhandenen Registrierungstokens aus einer Gerätegruppe entfernen, löscht FCM die Gerätegruppe.