ส่งข้อความไปยังกลุ่มอุปกรณ์ใน Unity

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

จำนวนสมาชิกสูงสุดที่อนุญาตสำหรับคีย์การแจ้งเตือนคือ 20 คน

การจัดการกลุ่มอุปกรณ์

ก่อนที่จะส่งข้อความไปยังกลุ่มอุปกรณ์ คุณต้องดำเนินการดังนี้

  1. รับโทเค็นการลงทะเบียนสำหรับอุปกรณ์แต่ละเครื่องที่ต้องการเพิ่มลงในกลุ่ม

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

การจัดการกลุ่มอุปกรณ์ขั้นพื้นฐาน ได้แก่ การสร้างและนำกลุ่มออก ตลอดจนการเพิ่มหรือนำอุปกรณ์ออก จะดำเนินการผ่าน HTTP v1 API โดยใช้โทเค็นที่มีอายุสั้น เพื่อให้สิทธิ์ส่งคำขอ โปรดดู คีย์การจัดการกลุ่มอุปกรณ์สำหรับรายการคีย์ที่รองรับ

การจัดการกลุ่มอุปกรณ์ในเซิร์ฟเวอร์ของแอป

การสร้างกลุ่มอุปกรณ์

หากต้องการสร้างกลุ่มอุปกรณ์ ให้ส่งคำขอ POST ที่มีชื่อกลุ่มและรายการโทเค็นการลงทะเบียนสำหรับอุปกรณ์ FCM จะแสดงผล notification_key ใหม่ที่แสดงถึงกลุ่มอุปกรณ์

คำขอ HTTP POST

ส่งคำขอต่อไปนี้ไปยัง https://fcm.googleapis.com/fcm/notification

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

notification_key_name คือชื่อหรือตัวระบุ (เช่น อาจเป็นชื่อผู้ใช้ได้) ที่ไม่ซ้ำกันสำหรับกลุ่มหนึ่งๆ notification_key_name และ notification_key ไม่ซ้ำกันในกลุ่มโทเค็นการลงทะเบียน หากคุณมีแอปไคลเอ็นต์หลายรายการสำหรับรหัสผู้ส่งเดียวกัน notification_key_name ต้องไม่ซ้ำกันต่อแอปไคลเอ็นต์ วิธีนี้ช่วยให้มั่นใจว่าข้อความจะไปยังแอปเป้าหมายที่ต้องการเท่านั้น

รูปแบบคำตอบ

คำขอที่สำเร็จแสดงผล notification_key ดังตัวอย่างต่อไปนี้

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

บันทึก notification_key และ notification_key_name ที่เกี่ยวข้องเพื่อใช้ในการดำเนินการต่อๆ ไป

กำลังเรียกคีย์การแจ้งเตือน

หากต้องการเรียกข้อมูลคีย์การแจ้งเตือนที่มีอยู่ ให้ใช้ notification_key_name ในคำขอ GET ดังที่แสดงด้านล่างนี้

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

สำหรับคำขอ GET แต่ละรายการสำหรับชื่อคีย์การแจ้งเตือนหนึ่งๆ เซิร์ฟเวอร์จะส่งกลับสตริงที่เข้ารหัสที่ไม่ซ้ำกัน แม้ว่าแต่ละสตริงอาจดูเหมือนเป็นคีย์ที่แตกต่างกัน แต่ที่จริงแล้วเป็นค่า "notification_key" ที่ถูกต้อง

การเพิ่มและการนำอุปกรณ์ออกจากกลุ่มอุปกรณ์

หากต้องการเพิ่มหรือนำอุปกรณ์ออกจากกลุ่มที่มีอยู่ ให้ส่งคำขอ POST ที่มีการตั้งค่าพารามิเตอร์ operation เป็น add หรือ remove และระบุโทเค็นการลงทะเบียนสำหรับการเพิ่มหรือนำออก

คำขอ HTTP POST

ตัวอย่างเช่น หากต้องการเพิ่มอุปกรณ์ที่มีโทเค็นการลงทะเบียน bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... ไปยัง appUser-Chris คุณจะต้องส่งคำขอนี้

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

รูปแบบคำตอบ

คำขอที่เพิ่มหรือนำอุปกรณ์ออกได้สำเร็จจะแสดง notification_key ดังตัวอย่างต่อไปนี้

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

คีย์การจัดการกลุ่มอุปกรณ์

ตารางต่อไปนี้แสดงรายการคีย์สำหรับการสร้างกลุ่มอุปกรณ์ รวมถึงการเพิ่มและนำสมาชิกออก

ตารางที่ 10 คีย์การจัดการกลุ่มอุปกรณ์

พารามิเตอร์ การใช้งาน คำอธิบาย
operation ต้องระบุ สตริง การดำเนินการที่จะเรียกใช้ ค่าที่ถูกต้องคือ create, add และ remove
notification_key_name ต้องระบุ สตริง ชื่อที่ผู้ใช้กำหนดของกลุ่มอุปกรณ์ที่จะสร้างหรือแก้ไข
notification_key ต้องระบุ (ยกเว้นการดำเนินการ create, สตริง ตัวระบุที่ไม่ซ้ำกันของกลุ่มอุปกรณ์ ระบบจะแสดงค่านี้ในการตอบกลับสำหรับการดำเนินการ create ที่สำเร็จ และค่านี้จำเป็นสำหรับการดำเนินการครั้งต่อๆ ไปทั้งหมดในกลุ่มอุปกรณ์
registration_ids ต้องระบุ อาร์เรย์ของสตริง โทเค็นของอุปกรณ์ที่จะเพิ่มหรือนำออก หากคุณนำโทเค็นการลงทะเบียนที่มีอยู่ทั้งหมดออกจากกลุ่มอุปกรณ์ FCM จะลบกลุ่มอุปกรณ์นั้น

การส่งข้อความที่ปลายทางไปยังกลุ่มอุปกรณ์

หากต้องการส่งข้อความไปยังกลุ่มอุปกรณ์ ให้ใช้ HTTP v1 API หากคุณกำลังส่งไปยังกลุ่มอุปกรณ์โดยใช้ API การส่งเดิมสำหรับ HTTP หรือ XMPP ที่เลิกใช้งานแล้ว หรือ Firebase Admin SDK สำหรับ Node.js เวอร์ชันเก่าที่อิงตามโปรโตคอลเดิม เราขอแนะนำให้คุณย้ายข้อมูลไปยัง HTTP v1 API โดยเร็วที่สุด ระบบจะปิดใช้ API การส่งแบบเดิมและนำออกในเดือนมิถุนายน 2024

การส่งข้อความไปยังกลุ่มอุปกรณ์คล้ายกับการส่งข้อความไปยังอุปกรณ์แต่ละเครื่องอย่างมาก โดยใช้วิธีการเดียวกันเพื่อให้สิทธิ์ส่งคำขอ ตั้งค่าช่อง token เป็นคีย์การแจ้งเตือนกลุ่ม

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

คำสั่ง cURL

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send

การส่งข้อความอัปสตรีมไปยังกลุ่มอุปกรณ์

แอปไคลเอ็นต์จะส่งข้อความอัปสตรีมไปยังกลุ่มอุปกรณ์ได้โดยกำหนดเป้าหมายข้อความไปยังคีย์การแจ้งเตือนที่เหมาะสมในช่อง to

การเรียก FCM ต่อไปนี้จะส่งข้อความอัปสตรีมไปยังคีย์การแจ้งเตือน

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);