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