Wenn Ihr App-Server das XMPP Connection Server- Protokoll implementiert, kann er Upstream-Nachrichten vom Gerät eines Benutzers an die Cloud empfangen. Um eine Upstream-Nachricht zu initiieren, sendet die Client-App eine Anfrage mit Folgendem:
- Die Adresse des empfangenden App-Servers im Format
SENDER_ID@fcm.googleapis.com
. - Eine Nachrichten-ID, die für jede Absender-ID eindeutig sein sollte.
- Die Nachrichtendaten umfassen die Schlüssel-Wert-Paare der Nutzdaten der Nachricht.
Wenn es diese Daten empfängt, erstellt FCM eine XMPP-Strophe, die an den App-Server gesendet wird, und fügt einige zusätzliche Informationen über das sendende Gerät und die App hinzu.
Senden Sie eine Upstream-Nachricht von einer Unity-Client-App
Um Nachrichten stromaufwärts an den Server zu senden, erstellt eine Unity-Client-App eine Nachricht und ruft Send
wie gezeigt auf:
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data("my_message", "Hello World");
message.Data("my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
Wo:
message.To
ist die Adresse des empfangenden App-Servers im FormatSENDER_ID@fcm.googleapis.com
.message.MessageId
ist eine eindeutige Nachrichtenkennung. Alle Rückrufe der Nachrichtenempfänger werden anhand dieser Nachrichten-ID identifiziert.message.Data
ist eine Zuordnung von Schlüsseln und Werten als Zeichenfolgen.message.TimeToLive
gibt an, wie lange (in Sekunden) die Nachricht im FCM-Speicher aufbewahrt werden soll, wenn das Gerät offline ist. Wenn FCM die Nachricht nicht vor Ablauf dieser Frist zustellen kann, sendet es eine Benachrichtigung an den Client zurück.
Die FCM-Clientbibliothek speichert die Nachricht in der Client-App zwischen und sendet sie, wenn der Client über eine aktive Serververbindung verfügt. Beim Empfang der Nachricht sendet FCM sie an den App-Server.
Empfangen Sie XMPP-Nachrichten auf dem App-Server
Wenn FCM einen Upstream-Messaging-Aufruf von einer Client-App empfängt, generiert es die erforderliche XMPP-Zeilengruppe zum Senden der Upstream-Nachricht. FCM fügt die Felder category
und „ from
“ hinzu und sendet dann eine Zeilengruppe wie die folgende an den App-Server:
<message id=""> <gcm xmlns="google:mobile:data"> { "category":"com.example.yourapp", // to know which app sent it "data": { "hello":"world", }, "message_id":"m-123", "from":"REGID" } </gcm> </message>
Senden einer ACK-Nachricht
Als Reaktion auf eine Upstream-Nachricht wie oben muss der App-Server dieselbe Verbindung verwenden, um eine ACK-Nachricht mit der eindeutigen Nachrichten-ID zu senden. Wenn FCM keine Bestätigung erhält, versucht es möglicherweise erneut, die Nachricht an den App-Server zu senden.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
Weitere Informationen zur Upstream-Nachrichtensyntax finden Sie in der XMPP-Verbindungsserver-Referenz .