Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

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

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

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

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

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

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

  2. สร้าง 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 ( register_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