Dieses Dokument enthält eine Referenz für die HTTP-Syntax, die zur Übergabe von Nachrichten von Ihrem Anwendungsserver an Clientanwendungen ü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 allgemeinen Kategorien einteilen:
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 Nutzlasten für HTTP-JSON-Nachrichten aufgeführt.
Parameter | Nutzung | Beschreibung | |
---|---|---|---|
Ziele | |||
to |
Optionaler 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 |
|
registration_ids | Optional, Array von Strings |
Dieser Parameter gibt den Empfänger einer Multicast-Nachricht an, also 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 du eine Nachricht an ein einzelnes Gerät senden möchtest, verwende den Parameter Multicast-Nachrichten sind nur im HTTP-JSON-Format zulässig. |
|
condition |
Optionaler 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: |
|
notification_key Eingestellt |
Optionaler String | Dieser Parameter ist nicht mehr verfügbar. Verwenden Sie stattdessen |
|
Optionen | |||
collapse_key |
Optionaler String | Mit diesem Parameter wird eine Gruppe von Nachrichten (z. B. mit 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 |
Optionaler String | Legt die Priorität der Nachricht fest. Gültige Werte sind "normal" und "high". Auf Apple-Plattformen entsprechen diese den APN-Prioritäten 5 und 10. Standardmäßig werden Benachrichtigungen mit hoher Priorität und Datennachrichten mit normaler Priorität gesendet. Die normale Priorität optimiert den Akkuverbrauch der Client-App und sollte verwendet werden, sofern keine sofortige Bereitstellung erforderlich ist. 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, boolescher Wert | Auf Apple-Plattformen wird dieses Feld für |
|
mutable_content |
Optional, boolescher JSON-Wert | Auf Apple-Plattformen wird dieses Feld für |
|
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 4 Wochen. Weitere Informationen finden Sie unter Gültigkeitsdauer einer Nachricht festlegen. |
|
restricted_package_
(nur Android) |
Optionaler 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 Der Standardwert ist |
|
Nutzlast | |||
data |
Optional, Objekt | Dieser Parameter gibt die benutzerdefinierten Schlüssel/Wert-Paare der Nachrichtennutzlast an. Zum Beispiel mit Wenn die Nachricht auf Apple-Plattformen über APNs gesendet wird, entspricht sie den benutzerdefinierten Datenfeldern. Wenn es über FCM gesendet wird, wird es in Unter Android würde dies zu einem Intent-Extra namens Der Schlüssel darf kein reserviertes Wort sein ("from", "message_type" oder ein anderes Wort, das mit "google" oder "gcm" beginnt). Verwenden Sie keines der in dieser Tabelle definierten Wörter (z. B. 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 den Nutzer sichtbaren Schlüssel/Wert-Paare der Benachrichtigungsnutzlast an. Weitere Informationen finden Sie unter Unterstützung der 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 Benachrichtigungen für iOS und Android verfügbar sind.
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 Audiodateien im Hauptbundle der Client-App oder im Ordner |
badge |
Optional, String |
Der Wert des Logos auf dem App-Symbol des Startbildschirms. Wenn keine Angabe erfolgt, wird das Logo nicht geändert.
Wenn |
click_action |
Optional, String |
Die Aktion, die mit einem Nutzerklick auf die Benachrichtigung verknüpft ist.
Entspricht |
subtitle |
Optionaler String |
Der Untertitel der Benachrichtigung. |
body_loc_key |
Optionaler 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 Weitere Informationen finden Sie unter Referenz für Nutzlastschlüssel und Inhalte von Remotebenachrichtigungen lokalisieren. |
body_loc_args |
Optional, JSON-Array als String |
Variable Stringwerte, die anstelle der Formatspezifizierer in
Entspricht Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren. |
title_loc_key |
Optionaler 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 Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren. |
title_loc_args |
Optional, JSON-Array als String |
Variable Stringwerte, die anstelle der Formatspezifizierer in
Entspricht Weitere Informationen finden Sie unter Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen lokalisieren. |
Parameter | Nutzung | Beschreibung |
---|---|---|
title |
Optional, String |
Der Titel der Benachrichtigung. |
body |
Optionaler 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 |
Optionaler String |
Das Benachrichtigungssymbol.
Das Benachrichtigungssymbol wird für die Zeichnen-Ressource |
sound |
Optional, String |
Ton, der abgespielt wird, wenn das Gerät die Benachrichtigung empfängt
Unterstützt |
tag |
Optional, String |
ID, die zum Ersetzen vorhandener Benachrichtigungen in der Benachrichtigungsleiste verwendet wird. Wenn nicht angegeben, wird für jede Anfrage eine neue Benachrichtigung erstellt. Wenn Sie ein Tag angeben und bereits eine Benachrichtigung mit demselben Tag angezeigt wird, ersetzt die neue Benachrichtigung die vorhandene im Benachrichtigungs-Schieberegler. |
color |
Optional, String |
Die Symbolfarbe der Benachrichtigung im |
click_action |
Optionaler String |
Die mit einem Nutzerklick verknüpfte Aktion auf die Benachrichtigung. 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 Textstring in den Stringressourcen der App, der zum Lokalisieren des Textkörpers für die aktuelle Lokalisierung des Nutzers verwendet werden soll. Weitere Informationen finden Sie unter Stringressourcen. |
body_loc_args |
Optional, JSON-Array als String |
Variable Stringwerte, die anstelle der Formatanweisungen in 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, der zum Lokalisieren des Titeltexts für die aktuelle Lokalisierung des Nutzers verwendet werden soll. Weitere Informationen finden Sie unter Stringressourcen. |
title_loc_args |
Optional, JSON-Array als String |
Variable Stringwerte, die anstelle der Formatanweisungen in Weitere Informationen finden Sie unter Formatierung und Stil. |
Parameter | Nutzung | Beschreibung |
---|---|---|
title |
Optional, String |
Der Titel der Benachrichtigung. |
body |
Optionaler String |
Der Text der Benachrichtigung. |
icon |
Optional, String |
Die URL für das Symbol der Benachrichtigung. |
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.
Parameter | Nutzung | Beschreibung |
---|---|---|
Ziele | ||
registration_id |
Erforderlich, String | Dieser Parameter gibt die Client-Apps (Registrierungstokens) an, die die Nachricht erhalten. Multicast-Nachrichten (die an mehrere Registrierungstokens gesendet werden) sind nur im HTTP-JSON-Format zulässig. |
Optionen | ||
collapse_key |
Optionaler 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> |
Optionaler String | Dieser Parameter gibt die Schlüssel/Wert-Paare der Nachrichtennutzlast an. Es gibt keine Begrenzung für die Anzahl der Schlüssel/Wert-Paar-Parameter, aber die Gesamtgröße der Nachricht ist auf 4.096 Byte beschränkt. In Android würde Der Schlüssel darf kein reserviertes Wort sein („from“, „message_type“ oder ein Wort, das mit „google“ oder „gcm“ beginnt). Verwenden Sie keines der in dieser Tabelle definierten Wörter (z. B. |
Antwort auf eine Downstream-Nachricht interpretieren
Der Anwendungsserver sollte sowohl den Nachrichtenantwortheader als auch den Textkörper auswerten, um die von FCM gesendete Nachrichtenantwort zu interpretieren. In der folgenden Tabelle werden die möglichen Antworten beschrieben.
Antwort | Beschreibung |
---|---|
200 | Die Nachricht wurde erfolgreich verarbeitet. Der Antworttext enthält weitere Details zum Nachrichtenstatus. Das Format hängt jedoch davon ab, ob die Anfrage im JSON-Format oder im Nur-Text-Format vorliegt. 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). Der genaue Grund für den Fehler wird in der Antwort beschrieben. Das Problem muss behoben werden, bevor die Anfrage noch einmal versucht werden kann. |
401 | Bei der Authentifizierung des Absenderkontos ist ein Fehler aufgetreten. |
5xx | Fehler im Bereich 500–599 (z. B. 500 oder 503) weisen darauf hin, dass beim Verarbeiten der Anfrage ein interner Fehler im FCM-Back-End 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 im nachgelagerten Nachrichtenantworttext (JSON) aufgeführt.
Parameter | Nutzung | Beschreibung |
---|---|---|
multicast_id |
Erforderlich, Zahl | 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 |
Erforderlich, Objekt-Array | 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.
|
Parameter | Nutzung | Beschreibung |
---|---|---|
message_id |
Optional, Zahl | Die Nachrichten-ID des Themas, wenn FCM die Anfrage erfolgreich empfangen hat und versucht, sie an alle abonnierten Geräte zu senden. |
error |
Optionaler String | Beim Verarbeiten der Nachricht ist ein Fehler aufgetreten. Die möglichen Werte finden Sie in Tabelle 9. |
Parameter | Nutzung | Beschreibung |
---|---|---|
id |
Erforderlich, String | Dieser Parameter gibt die eindeutige Nachrichten-ID an, die FCM erfolgreich verarbeitet wurde. |
registration_id |
Optional, String | Dieser Parameter gibt das Registrierungstoken für die Client-App an, an die die Nachricht verarbeitet und an die sie gesendet wurde. |
Parameter | Nutzung | Beschreibung |
---|---|---|
Error |
Erforderlich, String | Dieser Parameter gibt den Fehlerwert bei der Verarbeitung der Nachricht für den Empfänger an. Weitere Informationen finden Sie in Tabelle 9. |
Fehlerantwortcodes für nachgelagerte Nachrichten
In der folgenden Tabelle sind die Fehlerantwortcodes für Downstream-Nachrichten aufgeführt.
Fehler | HTTP-Code | Empfohlene Maßnahme |
---|---|---|
Fehlendes Registrierungstoken | 200 + Fehler:MissingRegistration | Prüfe, ob die Anfrage ein Registrierungstoken enthält (in registration_id in einer Nur-Text-Nachricht oder im Feld to oder registration_ids in JSON). |
Ungültiges Registrierungstoken | 200 + Fehler:InvalidRegistration | Prüfen Sie das Format des Registrierungstokens, das Sie an den Server übergeben. 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 + Fehler:NotRegistered | Ein vorhandenes Registrierungstoken kann in einer Reihe von Fällen ungültig werden, z. B.:
|
Ungültiger Paketname | 200 + error: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:
|
Nicht übereinstimmender Absender | 200 + error: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 + Fehler:UngültigeParameter | Prüfen Sie, ob die angegebenen Parameter den richtigen Namen und Typ haben. |
Nachricht zu groß | 200 + error:MessageTooBig | Achten Sie darauf, dass die Gesamtgröße der in einer Nachricht enthaltenen Nutzlastdaten die FCM-Limits nicht überschreitet: 4.096 Byte für die meisten Nachrichten oder 2.048 Byte bei Nachrichten zu Themen. Das gilt sowohl für die Schlüssel als auch für 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 + Fehler:UngültigTtl | 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:
Absender, die Probleme verursachen, riskieren, auf die schwarze Liste gesetzt zu werden. |
Interner Serverfehler | 500 oder 200 + error:InternalServerError | Beim Verarbeiten der Anfrage ist ein Fehler aufgetreten. Sie können dieselbe Anfrage unter Berücksichtigung der Anforderungen unter „Zeitüberschreitung“ (siehe Zeile oben) noch einmal versuchen. Wenn der Fehler weiterhin auftritt, wenden Sie sich bitte an den Firebase-Support. |
Rate für Nachrichten auf dem Gerät überschritten | Fehler 200:
DeviceMessageRate Überschritten |
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. |
Gerätegruppenverwaltung
In der folgenden Tabelle sind die Schlüssel zum Erstellen von Gerätegruppen und zum Hinzufügen und Entfernen von Mitgliedern aufgeführt. Weitere Informationen finden Sie im Leitfaden für Ihre Plattform, also iOS+ oder Android.
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 für die 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. |