Dieses Dokument enthält eine Referenz für die XMPP-Syntax, die zur Übergabe Nachrichten zwischen Ihrem Anwendungsserver, Client-Apps und Firebase Cloud Messaging (FCM) senden. Ihr Anwendungsserver muss eine Verbindung zu diesen Endpunkten herstellen:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
Die verfügbaren Parameter und gliedern sich die Optionen in folgende Kategorien:
- Syntax von Downstream-Nachrichten
- Antwortcodes für Downstream-Nachrichtenfehler
- Syntax von vorgelagerten Nachrichten
- FCM Kontrollnachrichten
Syntax der Downstream-Nachricht
In diesem Abschnitt wird die Syntax für das Senden von Downstream-Nachrichten beschrieben.
Downstream-XMPP-Nachrichten (JSON)
In der folgenden Tabelle sind die Ziele, Optionen und Nutzlasten für XMPP-JSON aufgeführt. Nachrichten.
Parameter | Nutzung | Beschreibung | |
---|---|---|---|
Ziel | |||
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 |
|
condition |
Optional, String | Dieser Parameter gibt einen logischen Ausdruck von Bedingungen an, der das Nachrichtenziel bestimmt. Unterstützte Bedingung: „Thema“, formatiert als „'deinThema' in topics“. Dieses beim -Wert wird die Groß-/Kleinschreibung nicht berücksichtigt. Unterstützte Operatoren: |
|
Optionen | |||
message_id |
Erforderlich, String | Dieser Parameter identifiziert eine Nachricht in einer XMPP-Verbindung eindeutig. |
|
collapse_key |
Optional, String | Mit diesem Parameter wird eine Gruppe von Nachrichten (z. B. mit Es gibt keine Garantie für die Reihenfolge, in der Nachrichten gesendet werden. Hinweis: Es sind maximal vier verschiedene Minimierungsschlüssel gleichzeitig zulässig. Das bedeutet, dass FCM gleichzeitig vier verschiedene Nachrichten pro Client-App speichern kann. Wenn Sie diese Anzahl überschreiten, kann nicht garantiert werden, welche vier Minimierungsschlüssel FCM beibehält. |
|
priority |
Optional, String | Legt die Priorität der Nachricht fest. Gültige Werte sind „normal“ und „hoch“. Auf Apple-Plattformen entsprechen diese den APNs-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 kann die App die Nachricht mit einer nicht näher bezeichneten Verzögerung erhalten. 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 muss dieses Feld für |
|
mutable_content |
Optional, boolescher JSON-Wert | Auf Apple-Plattformen: Verwenden Sie 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 ist 4 Wochen. Weitere Informationen finden Sie unter Lebensdauer einer Nachricht festlegen. |
|
dry_run |
Optional, boolesch | Wenn dieser Parameter auf Der Standardwert ist |
|
Nutzlast | |||
data |
Optional, Objekt | Mit diesem Parameter werden die Schlüssel/Wert-Paare der Nutzlast der Nachricht angegeben. Beispiel: Wenn die Nachricht auf Apple-Plattformen über APNs zugestellt wird, werden die benutzerdefinierten Datenfelder dargestellt. Wenn
Lieferung bis FCM,
wird er in Unter Android führt 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“). Verwenden Sie keine der in dieser Tabelle definierten Wörter (z. B. Es werden Werte in Stringtypen 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 | Mit diesem Parameter werden die vordefinierten, für Nutzer sichtbaren Schlüssel/Wert-Paare der Benachrichtigungsnutzlast angegeben. Weitere Informationen finden Sie unter Unterstützung der Benachrichtigungsnutzlast. Weitere Informationen
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 Benachrichtigungsnutzlast
In den folgenden Tabellen sind die vordefinierten Schlüssel zum Erstellen von Benachrichtigungen für Apple-Plattformen und Android
Parameter | Nutzung | Beschreibung |
---|---|---|
title |
Optionaler String |
Der Titel der Benachrichtigung. Auf Smartphones und Tablets ist dieses Feld nicht sichtbar. |
body |
Optional, 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 |
Optionaler String |
Der Wert des Logos auf dem App-Symbol auf dem Startbildschirm. Wenn keine Angabe erfolgt, wird das Logo nicht geändert.
Wenn Sie |
click_action |
Optionaler String |
Die mit einem Nutzerklick verknüpfte Aktion auf die Benachrichtigung.
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 Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen 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 |
Optional, String |
Der Schlüssel für den Titelstring in den Stringressourcen der App, der verwendet werden soll, um den Titeltext entsprechend der aktuellen Lokalisierung des Nutzers lokalisieren.
Entspricht Weitere Informationen finden Sie unter Payload-Key-Referenz und Lokalisieren des Inhalts Ihrer Remote-Benachrichtigungen Informationen. |
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 |
Optionaler String |
Der Titel der Benachrichtigung. |
body |
Optional, String |
Der Text der Benachrichtigung. |
android_channel_id |
Optional, String |
Die <ph type="x-smartling-placeholder"></ph> Kanal-ID der Benachrichtigung (neu in Android O). Die App muss einen Kanal mit dieser Kanal-ID erstellen, bevor eine Benachrichtigung mit dieser Kanal-ID empfangen wird. 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 |
Optionaler String |
Mit dieser Kennung werden vorhandene Benachrichtigungen in der Benachrichtigungsleiste ersetzt. 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 |
Optionaler String |
Die Farbe des Benachrichtigungssymbols im Format |
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 wenn ein Nutzer auf die Benachrichtigung klickt. |
body_loc_key |
Optionaler String |
Der Schlüssel für den Bodystring in den Stringressourcen der App, der verwendet werden soll, um den Text in die aktuelle Lokalisierung des Nutzers übersetzen. Weitere Informationen finden Sie unter Stringressourcen. |
body_loc_args |
Optional, JSON-Array als String |
Variable Stringwerte, die anstelle der Formatspezifizierer in
Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter „Formatierung und Gestaltung“. |
title_loc_key |
Optionaler String |
Der Schlüssel für den Titelstring in den Stringressourcen der App, der verwendet werden soll, um den Titeltext entsprechend der aktuellen Lokalisierung des Nutzers lokalisieren. 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 |
Optionaler 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 |
Optionaler String |
Die mit einem Nutzerklick verknüpfte Aktion auf die Benachrichtigung. Für alle URL-Werte ist HTTPS erforderlich. |
Antwort auf eine XMPP-Nachricht interpretieren
In der folgenden Tabelle sind die Felder aufgeführt, die in einer Downstream-XMPP-Nachrichtenantwort angezeigt werden.
Parameter | Nutzung | Beschreibung |
---|---|---|
from |
Erforderlich, String | Dieser Parameter gibt an, wer diese Antwort gesendet hat. Der Wert ist das Registrierungstoken der Clientanwendung. |
message_id |
Erforderlich, String | Dieser Parameter identifiziert eine Nachricht in einer XMPP-Verbindung eindeutig. Der Wert ist eine Zeichenfolge, die die zugehörige Nachricht eindeutig identifiziert. |
message_type |
Erforderlich, String | Dieser Parameter gibt eine Wenn der Wert auf |
error |
Optional, String | Dieser Parameter gibt einen Fehler in Bezug auf die nachgelagerte Meldung an. Er wird festgelegt, wenn der
message_type ist nack . Weitere Informationen finden Sie in Tabelle 4. |
error_description |
Optionaler String | Dieser Parameter enthält beschreibende Informationen zum Fehler. Sie wird festgelegt, wenn message_type den Wert nack hat. |
Fehlerantwortcodes für Downstream-Nachrichten
In der folgenden Tabelle sind die Fehlerantwortcodes für nachgelagerte Nachrichten aufgeführt.
Fehler | XMPP-Code | Empfohlene Maßnahmen |
---|---|---|
Fehlendes Registrierungstoken | INVALID_JSON |
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ültige APNs-Registrierung | INVALID_JSON |
Prüfen Sie bei iOS-Registrierungen, ob die Registrierungsanfrage vom Client ein gültiges APNs-Token und eine gültige Anwendungs-ID enthält. |
Ungültiges Registrierungstoken | BAD_REGISTRATION |
Prüfe das Format des Registrierungstokens, das du an den Server übergibst. Es muss mit dem Registrierungstoken übereinstimmen, das die Clientanwendung bei der Registrierung bei FCM erhält. Kürzen Sie den Text nicht und fügen Sie keine zusätzlichen Zeichen hinzu. |
Nicht registriertes Gerät | DEVICE_UNREGISTERED |
Ein vorhandenes Registrierungstoken kann in verschiedenen Fällen ungültig werden, z. B.:
|
Nicht übereinstimmender Absender | SENDER_ID_MISMATCH |
Ein Registrierungstoken ist mit einer bestimmten Gruppe von Absendern verknüpft. Wenn sich eine Client-App registriert Für FCM muss angegeben werden, welche Absender Nachrichten senden dürfen. Eine beim Senden von Nachrichten an die Client-App zu verwenden. Wenn Sie zu einem anderen werden die vorhandenen Registrierungstokens nicht verwendet. |
Ungültiges JSON-Format | INVALID_JSON |
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. |
Nachricht zu groß | INVALID_JSON |
Prüfen Sie, ob die Gesamtgröße der in einer Nachricht enthaltenen Nutzlastdaten die FCM-Limits nicht überschreiten: 4.096 Byte für die meisten Nachrichten oder 2.048 Byte im Fall von Nachrichten zu Themen. Das gilt sowohl für die Schlüssel als auch für die Werte. |
Ungültiger Datenschlüssel | INVALID_JSON |
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. Beachten Sie, dass einige Wörter (z. B. collapse_key )
werden auch von FCM verwendet, sind aber in der Nutzlast zulässig.
wird der Nutzlastwert vom Wert FCM überschrieben. |
Ungültige Gültigkeitsdauer | INVALID_JSON |
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. |
Ungültige ACK-Nachricht | BAD_ACK |
Prüfen Sie, ob die ack -Nachricht richtig formatiert ist, bevor Sie es noch einmal versuchen. Weitere Informationen finden Sie unter
Tabelle 6. |
Zeitlimit | SERVICE_UNAVAILABLE |
Der Server konnte die Anfrage nicht rechtzeitig verarbeiten. Wiederholen Sie dieselbe Anfrage. Beachten Sie dabei Folgendes:
Hinweis: Absender, die Probleme verursachen, laufen Gefahr, auf die schwarze Liste gesetzt zu werden. |
Interner Serverfehler | INTERNAL_SERVER_
|
Beim Verarbeiten der Anfrage ist auf dem Server ein Fehler aufgetreten. Du kannst es noch einmal versuchen dieselbe Anfrage gemäß den unter „Zeitüberschreitung“ aufgeführten Anforderungen (siehe Zeile oben). |
Gerätenachrichtenrate überschritten | DEVICE_MESSAGE_RATE |
Die Anzahl der Nachrichten an ein bestimmtes Gerät ist zu hoch. Reduzieren Sie Anzahl an Nachrichten, die an dieses Gerät gesendet wurden, und versuchen Sie nicht sofort, sie zu senden. |
Nachrichtenrate für Themen überschritten | TOPICS_MESSAGE_RATE |
Die Rate der Nachrichten an Abonnenten zu einem bestimmten Thema ist zu hoch. Reduzieren Sie die Anzahl der für dieses Thema gesendeten Nachrichten und versuchen Sie nicht sofort noch einmal, sie zu senden. |
Verbindungsausgleich | CONNECTION_DRAINING |
Die Nachricht konnte nicht verarbeitet werden, da die Verbindung per Drain beendet wird. Das liegt daran, In regelmäßigen Abständen muss FCM eine Verbindung für das Load-Balancing beenden. Senden Sie die Nachricht noch einmal über eine andere XMPP-Verbindung. |
Ungültige APNs-Anmeldedaten | INVALID_APNS_CREDENTIAL |
Eine an ein iOS-Gerät gerichtete Nachricht konnte nicht gesendet werden, da die erforderlichen APNs vorhanden sind Der Authentifizierungsschlüssel wurde nicht hochgeladen oder ist abgelaufen. Gültigkeit der Entwicklung prüfen und Produktionsanmeldedaten. |
Authentifizierung fehlgeschlagen | AUTHENTICATION_FAILED |
Authentifizierung bei externen Push-Diensten fehlgeschlagen. Überprüfen Sie, ob Sie das die richtigen Web-Push-Zertifikate zu erhalten. |
Syntax für Upstream-Nachrichten
Eine Upstream-Nachricht ist eine Nachricht, die die Client-App an den App-Server sendet. Derzeit unterstützt nur XMPP Upstream-Messaging. Weitere Informationen zum Senden von Benachrichtigungen aus Client-Apps finden Sie in der Dokumentation Ihrer Plattform.
Upstream-XMPP-Nachricht interpretieren
In der folgenden Tabelle sind die Felder in der XMPP-Strophe beschrieben, die von FCM als Antwort auf Upstream-Nachrichtenanfragen von Client-Apps generiert wird.
Parameter | Nutzung | Beschreibung |
---|---|---|
from |
Erforderlich, String | Dieser Parameter gibt an, wer die Nachricht gesendet hat. Der Wert ist das Registrierungstoken der Client-App. |
category |
Erforderlich, String | Dieser Parameter gibt den Namen des Anwendungspakets der Clientanwendung an, von der die Nachricht gesendet wurde. |
message_id |
Erforderlich, String | Dieser Parameter gibt die eindeutige ID der Nachricht an. |
data |
Optional, String | Dieser Parameter gibt die Schlüssel/Wert-Paare der Nachrichtennutzlast an. |
Bestätigungsnachricht senden
In der folgenden Tabelle wird die ACK-Antwort beschrieben, an die der Anwendungsserver senden soll FCM als Antwort auf eine Upstream-Nachricht, die der Anwendungsserver empfangen hat.
Parameter | Nutzung | Beschreibung |
---|---|---|
to |
Erforderlich, String | Mit diesem Parameter wird der Empfänger einer Antwortnachricht angegeben. Der Wert muss ein Registrierungstoken der Clientanwendung sein, die die Upstream-Nachricht gesendet hat. |
message_id |
Erforderlich, String | Dieser Parameter gibt an, für welche Nachricht die Antwort bestimmt ist. Der Wert muss
Den message_id -Wert aus der entsprechenden Upstream-Nachricht. |
message_type |
Erforderlich, String | Dieser Parameter gibt eine ack -Nachricht von einem App-Server an CCS an.
Für vorgelagerte Nachrichten sollte der Wert immer auf ack festgelegt werden. |
FCM Servernachrichten (XMPP)
Diese Nachricht wurde von FCM an einen Anwendungsserver gesendet. Hier sind die wichtigsten Arten von Mitteilungen, die FCM an den Anwendungsserver sendet:
- Kontrolle: Diese von CCS generierten Nachrichten weisen darauf hin, dass -Aktion vom Anwendungsserver erforderlich.
In der folgenden Tabelle werden die Felder beschrieben, die in den CCS-Nachrichten enthalten sind. an einen Anwendungsserver sendet.
Parameter | Nutzung | Beschreibung |
---|---|---|
Gemeinsames Feld | ||
message_type |
Erforderlich, String | Dieser Parameter gibt die Art der Nachricht an: Steuerelement. Wenn er auf |
control_type |
Optionaler String | Dieser Parameter gibt die Art der von FCM gesendeten Kontrollnachricht an. Derzeit wird nur |