Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

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