Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now

從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連接服務器參考