หากเซิร์ฟเวอร์แอปของคุณใช้ โปรโตคอลเซิร์ฟเวอร์การเชื่อมต่อ XMPP อุปกรณ์จะรับข้อความอัปสตรีมจากอุปกรณ์ของผู้ใช้ไปยังระบบคลาวด์ได้ ในการเริ่มต้นข้อความอัปสตรีม แอปไคลเอ็นต์จะส่งคำขอที่มีข้อมูลต่อไปนี้
- ที่อยู่ของเซิร์ฟเวอร์แอปฝั่งที่รับในรูปแบบ
SENDER_ID@fcm.googleapis.com
- รหัสข้อความซึ่งต้องไม่ซ้ำกันสำหรับรหัสผู้ส่งแต่ละรหัส
- ข้อมูลข้อความที่ประกอบด้วยคู่คีย์-ค่าของเพย์โหลดของข้อความ
เมื่อได้รับข้อมูลนี้ 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
คือตัวระบุข้อความที่ไม่ซ้ำกัน ระบบจะระบุการเรียกกลับของผู้รับข้อความทั้งหมดตามรหัสข้อความนี้message.Data
คือแผนที่คีย์และค่าเป็นสตริงmessage.TimeToLive
ระบุระยะเวลา (เป็นวินาที) ที่ข้อความควรมีความยาว เก็บไว้ในพื้นที่เก็บข้อมูล FCM หากอุปกรณ์ออฟไลน์อยู่ หาก FCM ส่งข้อความไม่ได้ก่อนที่ข้อความจะหมดอายุ ระบบจะส่งการแจ้งเตือนกลับไปให้ไคลเอ็นต์
ไลบรารีของไคลเอ็นต์ FCM จะแคชข้อความในแอปไคลเอ็นต์และส่ง เมื่อไคลเอ็นต์มีการเชื่อมต่อเซิร์ฟเวอร์ที่ใช้งานอยู่ เมื่อได้รับข้อความแล้ว FCM จะส่งข้อความดังกล่าวไปยังเซิร์ฟเวอร์แอป
รับข้อความ XMPP บนเซิร์ฟเวอร์ของแอป
เมื่อ FCM ได้รับคําเรียกการรับส่งข้อความจากแอปไคลเอ็นต์ ระบบจะสร้าง stanza XMPP ที่จําเป็นสําหรับส่งข้อความจากต้นทาง
FCM เพิ่มช่อง category
และ from
แล้วส่ง
เช่นตัวอย่างต่อไปนี้ไปยังเซิร์ฟเวอร์แอป
<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
ในการตอบกลับข้อความจากฝั่งต้นทาง เช่น ด้านบน เซิร์ฟเวอร์แอปต้องใช้การเชื่อมต่อเดียวกันเพื่อส่งข้อความ ACK ที่มีรหัสข้อความที่ไม่ซ้ำกัน หาก FCM ไม่ได้รับ ACK ก็อาจลองส่งข้อความไปยังเซิร์ฟเวอร์แอปอีกครั้ง
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
โปรดดูข้อมูลอ้างอิงเซิร์ฟเวอร์การเชื่อมต่อ XMPP เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ข้อความอัปสตรีม