Gửi thông báo ngược dòng (upstream) từ ứng dụng khách Unity

Nếu máy chủ ứng dụng của bạn triển khai giao thức Máy chủ kết nối XMPP, thì máy chủ này có thể nhận thông báo ngược từ thiết bị của người dùng đến đám mây. Để bắt đầu thông báo ngược dòng, ứng dụng khách sẽ gửi một yêu cầu có chứa nội dung sau:

  • Địa chỉ của máy chủ ứng dụng nhận ở định dạng SENDER_ID@fcm.googleapis.com.
  • Mã thông báo phải là mã riêng biệt cho mỗi mã nhận dạng người gửi.
  • Dữ liệu thông báo bao gồm các cặp khoá-giá trị trong tải trọng của thông báo.

Khi nhận được dữ liệu này, FCM sẽ tạo một khổ XMPP để gửi đến máy chủ ứng dụng, thêm một số thông tin bổ sung về thiết bị và ứng dụng gửi.

Gửi tin nhắn ngược từ ứng dụng khách Unity

Để gửi thông báo ngược dòng đến máy chủ, ứng dụng khách Unity sẽ soạn một thông báo và gọi Send như sau:

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

trong đó:

  • message.To là địa chỉ của máy chủ ứng dụng nhận ở định dạng SENDER_ID@fcm.googleapis.com.

  • message.MessageId là giá trị nhận dạng riêng biệt của tin nhắn. Tất cả lệnh gọi lại của trình nhận thông báo được xác định dựa trên mã thông báo này.

  • message.Data là một bản đồ gồm các khoá và giá trị dưới dạng chuỗi.

  • message.TimeToLive chỉ định thời lượng (tính bằng giây) mà thông báo sẽ được lưu trữ trong bộ nhớ FCM nếu thiết bị không có kết nối mạng. Nếu FCM không thể phân phối thông báo trước khi hết hạn, thì FCM sẽ gửi thông báo trở lại cho ứng dụng.

Thư viện ứng dụng FCM sẽ lưu thông báo trên ứng dụng vào bộ nhớ đệm và gửi thông báo đó khi ứng dụng có kết nối với máy chủ đang hoạt động. Khi nhận được thông báo, FCM sẽ gửi thông báo đó đến máy chủ ứng dụng.

Nhận thông báo XMPP trên máy chủ ứng dụng

Khi nhận được lệnh gọi nhắn tin ngược từ một ứng dụng khách, FCM sẽ tạo bản nhạc XMPP cần thiết để gửi thông báo ngược. FCM thêm các trường categoryfrom, sau đó gửi một stanza như sau đến máy chủ ứng dụng:

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

Gửi thông báo xác nhận (ACK)

Để phản hồi một thông báo ngược dòng như trên, máy chủ ứng dụng phải sử dụng cùng một kết nối để gửi thông báo ACK chứa mã nhận dạng thông báo duy nhất. Nếu không nhận được ACK, FCM có thể thử gửi lại thông báo này đến máy chủ ứng dụng.

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

Hãy xem Tài liệu tham khảo về máy chủ kết nối XMPP để biết thêm thông tin về cú pháp thông báo ngược dòng.