获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

从 Unity 客户端应用程序发送上游消息

如果您的应用服务器实现了XMPP 连接服务器协议,它可以接收从用户设备到云端的上游消息。要启动上游消息,客户端应用程序会发送包含以下内容的请求:

当它接收到这些数据时,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 连接服务器参考