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, ứng dụng có thể nhận thông báo ngược dòng từ thiết bị của người dùng lên đám mây. Để bắt đầu một thông báo ngược dòng, ứng dụng khách sẽ gửi một yêu cầu chứa những thông tin sau:

  • Địa chỉ của máy chủ ứng dụng nhận ở định dạng SENDER_ID@fcm.googleapis.com.
  • Mã nhận dạng thư phải là duy nhất cho mỗi mã 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ư minh hoạ:

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 thông báo duy nhất. Tất cả người nhận tin nhắn Các lệnh gọi lại được xác định dựa trên mã thông báo này.

  • message.Data là bản đồ 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) của tin nhắn được lưu 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 về cho ứng dụng.

Thư viện ứng dụng FCM lưu tin nhắn vào bộ nhớ đệm trên ứng dụng khách và gửi tin nhắn đó khi ứng dụng khách có kết nố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 một lệnh gọi nhắn tin ngược dòng (upstream) từ một ứng dụng khách, FCM sẽ tạo đoạn mã XMPP cần thiết để gửi thông điệp ngược dòng. 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>

Đang gửi thông báo ACK

Để phản hồi một thông báo ngược 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ã thông báo duy nhất. Nếu FCM không nhận được ACK, thì ứng dụng có thể thử gửi lại thông báo đế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.