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 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ã 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ị của tải trọng 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ạngSENDER_ID@fcm.googleapis.com
.message.MessageId
là giá trị nhận dạng thông báo duy nhất. 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 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 lệnh gọi nhắn tin ngược 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 category
và from
, 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 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 không nhận được ACK, FCM có thể thử lại gử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.