從 Unity 用戶端應用程式發送上游訊息

如果您的應用程式伺服器實現XMPP 連接伺服器協議,它可以接收從用戶設備到雲端的上游訊息。若要發起上游訊息,用戶端應用程式會傳送包含以下內容的請求:

  • 接收應用程式伺服器的位址,格式為SENDER_ID@fcm.googleapis.com
  • 對於每個寄件者 ID來說,訊息 ID 應該是唯一的。
  • 訊息資料包含訊息有效負載的鍵值對。

當收到此資料時,FCM 會建立一個 XMPP 節以傳送到應用程式伺服器,並新增有關傳送裝置和應用程式的一些附加資訊。

從 Unity 用戶端應用程式發送上游訊息

若要將訊息向上游傳送到伺服器,Unity 用戶端應用程式會撰寫一則訊息並呼叫Send ,如下所示:

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

在哪裡:

  • message.To是接收應用程式伺服器的位址,格式為SENDER_ID@fcm.googleapis.com

  • message.MessageId是唯一的訊息識別碼。所有的訊息接收者回呼都是根據這個訊息ID來識別的。

  • message.Data是鍵和值作為字串的對應。

  • message.TimeToLive指定如果設備離線,訊息應在 FCM 儲存中保留多長時間(以秒為單位)。如果 FCM 無法在此到期之前傳遞訊息,則會傳送回通知給用戶端。

FCM 用戶端庫將訊息快取在客戶端應用程式上,並在用戶端具有活動伺服器連線時發送該訊息。收到訊息後,FCM 將其發送到應用程式伺服器。

在應用程式伺服器上接收 XMPP 訊息

當 FCM 從客戶端應用程式接收到上游訊息傳遞呼叫時,它會產生發送上游訊息所需的 XMPP 節。 FCM 新增categoryfrom字段,然後將如下所示的節傳送到應用程式伺服器:

<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訊息

為了回應上述上游訊息,應用程式伺服器必須使用相同的連線來傳送包含唯一訊息 ID 的 ACK 訊息。如果 FCM 沒有收到 ACK,它可能會重試將訊息傳送到應用程式伺服器。

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

有關上游訊息語法的更多信息,請參閱XMPP 連接伺服器參考