การส่งข้อความกลุ่มอุปกรณ์ช่วยให้คุณสามารถเพิ่มอุปกรณ์หลายเครื่องในกลุ่มเดียว สิ่งนี้คล้ายกับการส่งข้อความตามหัวข้อ แต่รวมถึงการพิสูจน์ตัวตนเพื่อให้แน่ใจว่าการเป็นสมาชิกกลุ่มได้รับการจัดการโดยเซิร์ฟเวอร์ของคุณเท่านั้น ตัวอย่างเช่นหากคุณต้องการส่งข้อความที่แตกต่างกันไปยังโทรศัพท์รุ่นต่างๆเซิร์ฟเวอร์ของคุณสามารถเพิ่ม / ลบการลงทะเบียนไปยังกลุ่มที่เหมาะสมและส่งข้อความที่เหมาะสมไปยังแต่ละกลุ่ม การส่งข้อความกลุ่มอุปกรณ์แตกต่างจากการส่งข้อความตามหัวข้อตรงที่เกี่ยวข้องกับการจัดการกลุ่มอุปกรณ์จากเซิร์ฟเวอร์ของคุณแทนที่จะอยู่ภายในแอปพลิเคชันของคุณโดยตรง
คุณสามารถใช้การส่งข้อความกลุ่มอุปกรณ์ผ่าน 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": ["4", "8", "15", "16", "23", "42"] }
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 สำหรับชื่อคีย์การแจ้งเตือนที่กำหนดเซิร์ฟเวอร์จะส่งคืนสตริงที่เข้ารหัสเฉพาะ แม้ว่าแต่ละสตริงอาจดูเหมือนเป็นคีย์ที่แตกต่างกัน แต่ก็เป็นค่า "คีย์การแจ้งเตือน" ที่ถูกต้อง
การเพิ่มและนำอุปกรณ์ออกจากกลุ่มอุปกรณ์
ในการเพิ่มหรือลบอุปกรณ์ออกจากกลุ่มที่มีอยู่ให้ส่งคำขอ POST พร้อมกับพารามิเตอร์ operation
ตั้งค่าเพื่อ add
หรือ remove
และระบุโทเค็นการลงทะเบียนสำหรับการเพิ่มหรือลบ
คำขอ HTTP POST
ตัวอย่างเช่นหากต้องการเพิ่มอุปกรณ์ที่มีรหัสการลงทะเบียน 51 ไปยัง appUser-Chris คุณจะต้องส่งคำขอนี้:
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["51"]
}
รูปแบบการตอบกลับ
คำขอที่ประสบความสำเร็จในการเพิ่มหรือลบอุปกรณ์จะส่งกลับปุ่ม 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
การ notification_key
มีโทเค็นการลงทะเบียน 2 รายการที่เชื่อมโยงกันและส่งข้อความถึงทั้งคู่สำเร็จ
{ "success": 2, "failure": 0 }
นี่คือตัวอย่างของ "ความสำเร็จบางส่วน" - notification_key
การ notification_key
มีโทเค็นการลงทะเบียน 3 รายการที่เชื่อมโยงอยู่ ข้อความถูกส่งไปยัง 1 ในโทเค็นการลงทะเบียนเท่านั้น ข้อความตอบกลับแสดงโทเค็นการลงทะเบียนที่ไม่สามารถรับข้อความ:
{ "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
การ notification_key
มีโทเค็นการลงทะเบียน 3 รายการที่เชื่อมโยงอยู่และข้อความถูกส่งถึงพวกเขาทั้งหมดสำเร็จแล้ว:
{ "from": "aUniqueKey", "message_type": "ack", "success": 3, "failure": 0, "message_id": "m-1366082849205" }
นี่คือตัวอย่างของ "ความสำเร็จบางส่วน" - notification_key
การ notification_key
มีโทเค็นการลงทะเบียน 3 รายการที่เชื่อมโยงอยู่ ข้อความถูกส่งไปยัง 1 ในโทเค็นการลงทะเบียนเท่านั้น ข้อความตอบกลับแสดงโทเค็นการลงทะเบียนที่ไม่สามารถรับข้อความ:
{ "from": "aUniqueKey", "message_type": "ack", "success":1, "failure":2, "failed_registration_ids":[ "regId1", "regId2" ] }
เมื่อเซิร์ฟเวอร์การเชื่อมต่อ FCM ไม่สามารถส่งมอบไปยังอุปกรณ์ทั้งหมดในกลุ่ม เซิร์ฟเวอร์ของแอปจะได้รับการตอบสนอง
สำหรับรายการตัวเลือกข้อความทั้งหมดโปรดดูข้อมูลอ้างอิงสำหรับโปรโตคอลเซิร์ฟเวอร์การเชื่อมต่อที่คุณเลือก HTTP หรือ XMPP