ส่งข้อความอัปสตรีมจากแอปไคลเอ็นต์ Unity

หากเซิร์ฟเวอร์แอปของคุณใช้โปรโตคอลเซิร์ฟเวอร์การเชื่อมต่อ XMPP เซิร์ฟเวอร์จะสามารถรับข้อความอัปสตรีมจากอุปกรณ์ของผู้ใช้ไปยังระบบคลาวด์ได้ หากต้องการเริ่มข้อความขาขึ้น แอปไคลเอ็นต์จะส่งคําขอที่มีข้อมูลต่อไปนี้

  • ที่อยู่ของเซิร์ฟเวอร์แอปฝั่งที่รับในรูปแบบ SENDER_ID@fcm.googleapis.com
  • รหัสข้อความที่ควรไม่ซ้ำกันสำหรับรหัสผู้ส่งแต่ละรหัส
  • ข้อมูลข้อความที่ประกอบด้วยคู่คีย์-ค่าของเพย์โหลดข้อความ

เมื่อได้รับข้อมูลนี้ FCM จะสร้าง stanza ของ 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 แล้วส่ง 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 ที่มีรหัสข้อความที่ไม่ซ้ำกัน หาก FCM ไม่ได้รับ ACK อาจลองส่งข้อความไปที่เซิร์ฟเวอร์แอปอีกครั้ง

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

โปรดดูข้อมูลอ้างอิงเซิร์ฟเวอร์การเชื่อมต่อ XMPP สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ของข้อความอัปสตรีม