Upstream-Nachrichten von einer Unity-Client-App senden

Wenn Ihr App-Server das XMPP Connection Server-Protokoll implementiert, kann er Upstream-Nachrichten vom Gerät eines Nutzers an die Cloud empfangen. Um eine Upstream-Nachricht zu initiieren, sendet die Client-App eine Anfrage mit den folgenden Angaben:

  • Die Adresse des empfangenden App-Servers im Format SENDER_ID@fcm.googleapis.com.
  • Eine Nachrichten-ID, die für jede Absender-ID eindeutig sein muss.
  • Die Nachrichtendaten, die die Schlüssel/Wert-Paare der Nutzlast der Nachricht enthalten.

Wenn FCM diese Daten empfängt, erstellt es eine XMPP-Strophe, die an den App-Server gesendet wird. Dabei werden einige zusätzliche Informationen zum sendenden Gerät und zur App hinzugefügt.

Upstream-Nachricht von einer Unity-Client-App senden

Um Nachrichten an den Server zu senden, verfasst eine Unity-Client-App eine Nachricht und ruft Send auf, wie hier gezeigt:

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);

Dabei gilt:

  • message.To ist die Adresse des empfangenden App-Servers im Format SENDER_ID@fcm.googleapis.com.

  • message.MessageId ist eine eindeutige Nachrichten-ID. Alle Rückrufe für den Nachrichtenempfänger werden anhand dieser Nachrichten-ID identifiziert.

  • message.Data ist eine Zuordnung von Schlüsseln und Werten als Strings.

  • Mit message.TimeToLive wird angegeben, 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 zuzustellen kann, wird eine Benachrichtigung an den Client zurückgesendet.

Die FCM-Clientbibliothek speichert die Nachricht in der Client-App im Cache und sendet sie, wenn der Client eine aktive Serververbindung hat. Wenn FCM die Nachricht empfängt, sendet sie sie an den App-Server.

XMPP-Nachrichten auf dem App-Server empfangen

Wenn FCM einen Upstream-Messaging-Aufruf von einer Client-App erhält, generiert er die erforderliche XMPP-Strophe zum Senden der Upstream-Nachricht. FCM fügt die Felder category und from hinzu und sendet dann eine Zeile 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>

ACK-Nachricht senden

Als Antwort auf eine solche Upstream-Nachricht 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 er möglicherweise noch einmal, 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 Syntax von Upstream-Nachrichten findest du in der XMPP-Verbindungsserverreferenz.