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

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

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

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

คุณสามารถใช้การส่งข้อความกลุ่มอุปกรณ์ผ่าน โปรโตคอล 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 or 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 ล้มเหลวในการส่งไปยังอุปกรณ์ทั้งหมดในกลุ่ม เซิร์ฟเวอร์แอปจะได้รับการตอบสนอง nack

สำหรับรายการตัวเลือกข้อความทั้งหมด โปรดดูข้อมูลอ้างอิงสำหรับโปรโตคอลเซิร์ฟเวอร์การเชื่อมต่อที่คุณเลือก HTTP หรือ XMPP