Senden Sie Upstream-Nachrichten von einer Unity-Client-App

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 Inhalt:

  • 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, die die Schlüssel-Wert-Paare der Nutzlast der Nachricht umfassen.

Wenn es diese Daten empfängt, erstellt FCM eine XMPP-Stanza, 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 Format SENDER_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 Abbildung 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 vor Erreichen dieses Ablaufs nicht zustellen kann, sendet es eine Benachrichtigung an den Client zurück.

Die FCM-Clientbibliothek speichert die Nachricht in der Client-App und sendet sie, wenn der Client über eine aktive Serververbindung verfügt. Nach Erhalt 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-Stanza 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 Antwort auf eine Upstream-Nachricht wie oben muss der App-Server dieselbe Verbindung verwenden, um eine ACK-Nachricht zu senden, die die eindeutige Nachrichten-ID enthält. Wenn FCM keine ACK erhält, kann es erneut versuchen, 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 .