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

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

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

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

รับข้อความ XMPP บนเซิร์ฟเวอร์แอป

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

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

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