ส่งข้อความไปยังกลุ่มอุปกรณ์ใน 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);