Firebase Cloud Messaging-XMPP-Protokoll

In diesem Dokument finden Sie eine Referenz für die XMPP-Syntax, die zum Übergeben von Nachrichten zwischen Ihrem App-Server, Client-Apps und Firebase Cloud Messaging (FCM) verwendet wird. Ihr App-Server muss eine Verbindung zu diesen Endpunkten herstellen:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

Die verfügbaren Parameter und Optionen fallen in die folgenden Kategorien:

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-Nachrichten aufgeführt.

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

Parameter Nutzung Beschreibung
Ziel
to Optional, String

Mit diesem Parameter wird der Empfänger einer Nachricht angegeben.

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.

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“. Bei diesem Wert wird die Groß- und Kleinschreibung nicht berücksichtigt.

Unterstützte Operatoren: &&, ||. Es werden maximal zwei Operatoren pro Nachrichtenthema unterstützt.

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 collapse_key: "Updates Available") angegeben, die minimiert werden kann, sodass bei der Fortsetzung der Zustellung nur die letzte Nachricht gesendet wird. So soll verhindert werden, dass zu viele Nachrichten gesendet werden, wenn das Gerät wieder online geht oder aus dem Ruhemodus erwacht.

Es gibt keine Garantie dafür, in welcher Reihenfolge Nachrichten gesendet werden.

Hinweis: Es sind jeweils maximal vier verschiedene Minimierungsschaltflächen 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 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 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

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. Hinweis: Die Zustellung von stummen Benachrichtigungen in APNs ist nicht garantiert und kann von Faktoren wie dem Aktivieren des Energiesparmodus oder dem Erzwingen des Beendens der App abhängen. Unter Android werden Datennachrichten standardmäßig verwendet, um die App zu aktivieren. 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 auf Android-Geräten 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 Lebensdauer einer Nachricht festlegen.

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

Mit diesem Parameter werden die Schlüssel/Wert-Paare der Nutzlast der Nachricht angegeben.

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

Wenn die Nachricht auf Apple-Plattformen über APNs zugestellt wird, werden die benutzerdefinierten Datenfelder dargestellt. Wenn es von FCM gesendet wird, wird es in AppDelegate application:didReceiveRemoteNotification: als Schlüssel/Wert-Wörterbuch dargestellt.

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

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 Apple-Plattformen und Android verfügbar sind.

Tabelle 2a Apple – 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 Optional, String

Der Textkörper 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 Library/Sounds des Datencontainers der App angibt. Weitere Informationen finden Sie in der iOS Developer Library.

badge Optional, String

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

Wird keine Angabe gemacht, ändert sich das Kennzeichen nicht.

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 Payload-Schlüsselreferenz und Inhalte von Remote-Benachrichtigungen 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 Textkörper 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 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 Optional, String

Das Symbol der Benachrichtigung.

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

sound Optional, String

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

Unterstützt "default" oder den Dateinamen einer in der App gebündelten Audioressource. Audiodateien müssen sich in /res/raw/ befinden.

tag Optional, String

Kennung, mit der vorhandene Benachrichtigungen in der Benachrichtigungsleiste ersetzt werden.

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 #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 Formatanweisungen in body_loc_key verwendet werden, um den Textkörper an die aktuelle Lokalisierung des Nutzers anzupassen.

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 Textkörper der Benachrichtigung.

icon Optional, String

Die URL für das Symbol der Benachrichtigung.

click_action Optional, String

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

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.

Tabelle 3: XMPP-Antworttext der Downstream-Nachricht.

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 ein String, der die zugehörige Nachricht eindeutig identifiziert.
message_type Erforderlich, String

Dieser Parameter gibt eine ack- oder nack-Nachricht von FCM an den App-Server an.

Wenn der Wert auf nack gesetzt ist, sollte der App-Server error und error_description prüfen, um Informationen zu Fehlern zu erhalten.

error Optional, String Dieser Parameter gibt einen Fehler an, der sich auf die nachfolgende Nachricht bezieht. Er wird festgelegt, wenn message_type nack ist. Weitere Informationen finden Sie in Tabelle 4.
error_description Optional, 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 Downstream-Nachrichten aufgeführt.

Tabelle 4: Fehlerantwortcodes für Downstream-Nachrichten

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 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: Wenn das APNs-Token unter iOS als ungültig gemeldet wurde.
  • Wenn das Registrierungstoken abläuft (z. B. wenn Google entscheidet, Registrierungstokens zu aktualisieren, oder das APNs-Token für Geräte abgelaufen ist).
  • Wenn die Client-App aktualisiert wurde, die neue Version aber nicht für den Empfang von Nachrichten konfiguriert ist.
In all diesen Fällen müssen Sie dieses Registrierungstoken vom App-Server entfernen und es nicht mehr zum Senden von Nachrichten verwenden.
Nicht übereinstimmender Absender SENDER_ID_MISMATCH 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 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 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. 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. 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 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.
Falsche ACK-Nachricht BAD_ACK Prüfen Sie, ob die ack-Nachricht richtig formatiert ist, bevor Sie es noch einmal versuchen. Weitere Informationen finden Sie in Tabelle 6.
Zeitlimit SERVICE_UNAVAILABLE

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

  • Implementieren Sie den exponentiellen Backoff in Ihrem Wiederholungsmechanismus. Wenn Sie beispielsweise eine Sekunde vor dem ersten Wiederholungsversuch gewartet haben, warten Sie mindestens zwei Sekunden vor dem nächsten, dann vier Sekunden usw. 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.
  • Die anfängliche Verzögerung für den Wiederholungsversuch sollte auf eine Sekunde festgelegt werden.

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

Interner Serverfehler INTERNAL_SERVER_
ERROR
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.
Gerätenachrichtenrate überschritten DEVICE_MESSAGE_RATE
_EXCEEDED
Die Anzahl der Nachrichten an ein bestimmtes Gerät ist zu hoch. Senden Sie weniger Nachrichten an dieses Gerät und versuchen Sie nicht sofort noch einmal, Nachrichten an dieses Gerät zu senden.
Nachrichtenrate für Themen überschritten TOPICS_MESSAGE_RATE
_EXCEEDED
Die Anzahl der Nachrichten an Abonnenten eines bestimmten Themas 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 zu stark beansprucht wird. Das liegt daran, dass FCM regelmäßig eine Verbindung schließen muss, um das Load Balancing durchzuführen. Senden Sie die Nachricht noch einmal über eine andere XMPP-Verbindung.
Ungültige APNs-Anmeldedaten INVALID_APNS_CREDENTIAL Eine Nachricht, die auf ein iOS-Gerät ausgerichtet ist, konnte nicht gesendet werden, da der erforderliche APN-Authentifizierungsschlüssel nicht hochgeladen wurde oder abgelaufen ist. Prüfen Sie die Gültigkeit Ihrer Entwicklungs- und Produktionsanmeldedaten.
Authentifizierung fehlgeschlagen AUTHENTICATION_FAILED Authentifizierung bei externen Push-Diensten fehlgeschlagen. Prüfen Sie, ob Sie die richtigen Web-Push-Zertifikate verwenden.

Syntax für Upstream-Nachrichten

Eine Upstream-Nachricht ist eine Nachricht, die die Client-App an den App-Server sendet. Derzeit wird nur XMPP für Upstream-Messaging unterstützt. 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.

Tabelle 5: Upstream-XMPP-Nachrichten

Parameter Nutzung Beschreibung
from Erforderlich, String

Mit diesem Parameter wird angegeben, wer die Nachricht gesendet hat.

Der Wert ist das Registrierungstoken der Clientanwendung.

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 Mit diesem Parameter werden die Schlüssel/Wert-Paare der Nutzlast der Nachricht angegeben.

ACK-Nachricht senden

In der folgenden Tabelle wird die ACK-Antwort beschrieben, die der App-Server als Reaktion auf eine Upstream-Nachricht, die der App-Server empfangen hat, an FCM senden soll.

Tabelle 6: Upstream-XMPP-Nachrichtenantwort

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 dem message_id-Wert aus der entsprechenden Upstream-Nachricht entsprechen.
message_type Erforderlich, String Dieser Parameter gibt eine ack-Nachricht von einem App-Server an CCS an. Für Upstream-Nachrichten sollte es immer auf ack festgelegt sein.

FCM Servernachrichten (XMPP)

Dies ist eine Nachricht, die von FCM an einen App-Server gesendet wurde. Im Folgenden sind die Haupttypen von Nachrichten aufgeführt, die FCM an den App-Server sendet:

  • Steuerung:Diese von CCS generierten Nachrichten weisen darauf hin, dass eine Aktion vom App-Server erforderlich ist.

In der folgenden Tabelle werden die Felder beschrieben, die in den Nachrichten enthalten sind, die CCS an einen App-Server sendet.

Tabelle 7 FCM Kontrollnachrichten (XMPP)

Parameter Nutzung Beschreibung
Gemeinsames Feld
message_type Erforderlich, String

Dieser Parameter gibt den Typ der Nachricht an: „control“.

Wenn er auf control festgelegt ist, enthält die Nachricht control_type, um den Typ der Steuernachricht anzugeben.

control_type Optional, String

Dieser Parameter gibt den Typ der Kontrollnachricht an, die von FCM gesendet wird.

Derzeit wird nur CONNECTION_DRAINING unterstützt. FCM sendet diese Kontrollnachricht, bevor eine Verbindung zum Ausführen des Load Balancing geschlossen wird. Während der Verbindungsausgleich erfolgt, dürfen keine weiteren Nachrichten an die Verbindung gesendet werden. Vorhandene Nachrichten in der Pipeline werden jedoch weiterhin verarbeitet.