การส่งข้อความกลุ่มอุปกรณ์ช่วยให้คุณเพิ่มอุปกรณ์หลายเครื่องลงในกลุ่มเดียว ซึ่งคล้ายกับการส่งข้อความตามหัวข้อ แต่รวมถึงการรับรองความถูกต้องเพื่อให้แน่ใจว่าการเป็นสมาชิกกลุ่มได้รับการจัดการโดยเซิร์ฟเวอร์ของคุณเท่านั้น ตัวอย่างเช่น หากคุณต้องการส่งข้อความที่แตกต่างกันไปยังโทรศัพท์รุ่นต่างๆ เซิร์ฟเวอร์ของคุณสามารถเพิ่ม/ลบการลงทะเบียนไปยังกลุ่มที่เหมาะสมและส่งข้อความที่เหมาะสมไปยังแต่ละกลุ่มได้ การส่งข้อความกลุ่มอุปกรณ์แตกต่างจากการส่งข้อความตามหัวข้อตรงที่เกี่ยวข้องกับการจัดการกลุ่มอุปกรณ์จากเซิร์ฟเวอร์ของคุณแทนที่จะเป็นโดยตรงภายในแอปพลิเคชันของคุณ
คุณสามารถใช้การส่งข้อความกลุ่มอุปกรณ์ผ่านโปรโตคอล XMPP หรือ HTTP เดิมบนเซิร์ฟเวอร์แอปของคุณ Firebase Admin SDK เวอร์ชันเก่าสำหรับ Node.js อิงตามโปรโตคอลเดิมและยังมีความสามารถในการส่งข้อความกลุ่มอุปกรณ์ จำนวนสมาชิกสูงสุดที่อนุญาตสำหรับคีย์การแจ้งเตือนคือ 20
การจัดการกลุ่มอุปกรณ์
ก่อนส่งข้อความไปยังกลุ่มอุปกรณ์ คุณต้อง:
รับโทเค็นการลงทะเบียนสำหรับอุปกรณ์แต่ละเครื่องที่คุณต้องการเพิ่มลงในกลุ่ม
สร้าง
notification_key
ซึ่งระบุกลุ่มอุปกรณ์โดยการแมปกลุ่มเฉพาะ (โดยทั่วไปคือผู้ใช้) กับโทเค็นการลงทะเบียนที่เกี่ยวข้องทั้งหมดของกลุ่ม คุณสามารถสร้างคีย์การแจ้งเตือนบนเซิร์ฟเวอร์แอป
การจัดการพื้นฐานของกลุ่มอุปกรณ์ — การสร้างและลบกลุ่ม และเพิ่มหรือลบอุปกรณ์ — ดำเนินการผ่านเซิร์ฟเวอร์แอป ดู การอ้างอิงโปรโตคอล HTTP เดิมสำหรับรายการคีย์ที่รองรับ
การจัดการกลุ่มอุปกรณ์บนเซิร์ฟเวอร์แอป
การสร้างกลุ่มอุปกรณ์
หากต้องการสร้างกลุ่มอุปกรณ์ ให้ส่งคำขอ POST ที่ระบุชื่อสำหรับกลุ่มและรายการโทเค็นการลงทะเบียนสำหรับอุปกรณ์ FCM ส่งคืน notification_key
ใหม่ที่แสดงถึงกลุ่มอุปกรณ์
คำขอ HTTP POST
ส่งคำขอดังต่อไปนี้ไปที่ https://fcm.googleapis.com/fcm/notification
:
https://fcm.googleapis.com/fcm/notification Content-Type:application/json Authorization:key=API_KEY 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
จะต้องไม่ซ้ำกันสำหรับแต่ละแอปไคลเอ็นต์ หากคุณมีแอปไคลเอ็นต์หลายแอปสำหรับ ID ผู้ส่ง เดียวกัน สิ่งนี้ทำให้มั่นใจได้ว่าข้อความจะส่งไปยังแอปเป้าหมายที่ต้องการเท่านั้น
รูปแบบการตอบสนอง
คำขอที่สำเร็จจะส่งคืน 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 Authorization:key=API_KEY 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" }
การส่งข้อความดาวน์สตรีมไปยังกลุ่มอุปกรณ์
การส่งข้อความไปยังกลุ่มอุปกรณ์จะคล้ายกับการส่งข้อความไปยังอุปกรณ์แต่ละเครื่อง ตั้ง to
พารามิเตอร์เป็นคีย์การแจ้งเตือนเฉพาะสำหรับกลุ่มอุปกรณ์ ดู ประเภทข้อความ สำหรับรายละเอียดเกี่ยวกับการสนับสนุนเพย์โหลด ตัวอย่างในหน้านี้แสดงวิธีการส่งข้อความข้อมูลไปยังกลุ่มอุปกรณ์ในโปรโตคอล HTTP และ XMPP เดิม
คำขอ HTTP POST ของกลุ่มอุปกรณ์
https://fcm.googleapis.com/fcm/send Content-Type:application/json Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA { "to": "aUniqueKey", "data": { "hello": "This is a Firebase Cloud Messaging Device Group Message!", } }
การตอบสนอง HTTP ของกลุ่มอุปกรณ์
ต่อไปนี้เป็นตัวอย่างของ "ความสำเร็จ"— notification_key
มีโทเค็นการลงทะเบียน 2 รายการที่เกี่ยวข้องกัน และข้อความถูกส่งไปยังทั้งสองรายการสำเร็จแล้ว:
{ "success": 2, "failure": 0 }
นี่คือตัวอย่างของ "ความสำเร็จบางส่วน" — notification_key
มี 3 โทเค็นการลงทะเบียนที่เกี่ยวข้อง ข้อความถูกส่งไปยังโทเค็นการลงทะเบียน 1 รายการเท่านั้น ข้อความตอบกลับแสดงรายการโทเค็นการลงทะเบียน ( registration_ids
) ที่ไม่ได้รับข้อความ:
{ "success":1, "failure":2, "failed_registration_ids":[ "regId1", "regId2" ] }
เมื่อไม่สามารถส่งข้อความไปยังโทเค็นการลงทะเบียนอย่างน้อยหนึ่งโทเค็นที่เชื่อมโยงกับ notification_key
เซิร์ฟเวอร์แอปควรลองใหม่โดยถอยกลับระหว่างการลองใหม่
หากเซิร์ฟเวอร์พยายามส่งข้อความไปยังกลุ่มอุปกรณ์ที่ไม่มีสมาชิก การตอบกลับจะมีลักษณะดังต่อไปนี้ โดยมี 0 สำเร็จและ 0 ล้มเหลว:
{ "success": 0, "failure": 0 }
ข้อความ XMPP ของกลุ่มอุปกรณ์
<message id=""> <gcm xmlns="google:mobile:data"> { "to": "aUniqueKey", "message_id": "m-1366082849205" , "data": { "hello":"This is a Firebase Cloud Messaging Device Group Message!" } } </gcm> </message>
การตอบสนอง XMPP ของกลุ่มอุปกรณ์
เมื่อข้อความถูกส่งไปยังอุปกรณ์ตัวใดตัวหนึ่งในกลุ่มสำเร็จ เซิร์ฟเวอร์การเชื่อมต่อ XMPP จะตอบกลับด้วย ACK หากข้อความทั้งหมดที่ส่งไปยังอุปกรณ์ทั้งหมดในกลุ่มล้มเหลว เซิร์ฟเวอร์การเชื่อมต่อ XMPP จะตอบกลับด้วย NACK
ต่อไปนี้เป็นตัวอย่างของ "ความสำเร็จ" — notification_key
มี 3 โทเค็นการลงทะเบียนที่เกี่ยวข้อง และข้อความถูกส่งไปยังโทเค็นทั้งหมดสำเร็จแล้ว:
{ "from": "aUniqueKey", "message_type": "ack", "success": 3, "failure": 0, "message_id": "m-1366082849205" }
นี่คือตัวอย่างของ "ความสำเร็จบางส่วน" — notification_key
มี 3 โทเค็นการลงทะเบียนที่เกี่ยวข้อง ข้อความถูกส่งไปยังโทเค็นการลงทะเบียน 1 รายการเท่านั้น ข้อความตอบกลับแสดงรายการโทเค็นการลงทะเบียนที่ไม่ได้รับข้อความ:
{ "from": "aUniqueKey", "message_type": "ack", "success":1, "failure":2, "failed_registration_ids":[ "regId1", "regId2" ] }
เมื่อเซิร์ฟเวอร์การเชื่อมต่อ FCM ไม่สามารถส่งไปยังอุปกรณ์ทั้งหมดในกลุ่ม เซิร์ฟเวอร์แอปจะได้รับการตอบกลับที่ไม่แน่นอน
สำหรับรายการตัวเลือกข้อความทั้งหมด โปรดดูข้อมูลอ้างอิงสำหรับโปรโตคอลเซิร์ฟเวอร์การเชื่อมต่อที่คุณเลือก HTTP หรือ XMPP