ส่งข้อความไปยังกลุ่มอุปกรณ์ในแพลตฟอร์ม Apple

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

จำนวนสมาชิกสูงสุดที่อนุญาตสำหรับคีย์การแจ้งเตือนคือ 20 คน

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

ก่อนที่จะส่งข้อความไปยังกลุ่มอุปกรณ์ คุณต้องดำเนินการดังนี้

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

  2. สร้าง notification_key ซึ่งระบุ กลุ่มอุปกรณ์ได้ด้วยการจับคู่กลุ่มที่เจาะจง (โดยทั่วไปจะเป็น user) กับโทเค็นการลงทะเบียนที่เกี่ยวข้องทั้งหมดของกลุ่ม คุณสร้างคีย์การแจ้งเตือนในเซิร์ฟเวอร์ของแอปได้

การจัดการกลุ่มอุปกรณ์ขั้นพื้นฐาน เช่น การสร้างและนำกลุ่มออก และการเพิ่มหรือนำอุปกรณ์ออกจะดำเนินการผ่าน HTTP v1 API การใช้โทเค็นที่มีอายุสั้นเพื่อ ให้สิทธิ์ส่งคำขอ โปรดดู คีย์การจัดการกลุ่มอุปกรณ์สำหรับรายการคีย์ที่รองรับ

การจัดการกลุ่มอุปกรณ์ในเซิร์ฟเวอร์ของแอป

การสร้างกลุ่มอุปกรณ์

หากต้องการสร้างกลุ่มอุปกรณ์ ให้ส่งคำขอ POST ที่มีชื่อ สำหรับกลุ่ม และรายการโทเค็นการลงทะเบียนสำหรับอุปกรณ์ FCM แสดงผล notification_key ใหม่ ที่แสดงถึงกลุ่มอุปกรณ์

คำขอ HTTP POST

ส่งคำขอที่มีลักษณะดังต่อไปนี้ไปยัง https://fcm.googleapis.com/fcm/notification:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
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 ไม่ซ้ำกันต่อแอปไคลเอ็นต์ ถ้าคุณมีแอปไคลเอ็นต์หลายแอป รหัสผู้ส่ง วิธีนี้ช่วยให้มั่นใจว่าข้อความจะไปยังแอปเป้าหมายที่ต้องการเท่านั้น

รูปแบบคำตอบ

คำขอที่สำเร็จแสดงผลเป็นการกดชอบ 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
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
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"
}

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

ตารางต่อไปนี้แสดงคีย์สำหรับการสร้างกลุ่มอุปกรณ์ ตลอดจนการเพิ่มและนำสมาชิกออก

ตารางที่ 10 คีย์การจัดการกลุ่มอุปกรณ์

พารามิเตอร์ การใช้งาน คำอธิบาย
operation ต้องระบุ สตริง การดำเนินการที่จะเรียกใช้ ค่าที่ถูกต้องคือ create add และ remove
notification_key_name ต้องระบุ สตริง ชื่อที่ผู้ใช้กำหนดของกลุ่มอุปกรณ์ที่จะสร้างหรือแก้ไข
notification_key ต้องระบุ (ยกเว้นการดำเนินการ create, สตริง ตัวระบุที่ไม่ซ้ำกันของกลุ่มอุปกรณ์ ค่านี้ แสดงผลในการตอบกลับสำหรับ create ที่สำเร็จ และเป็น ซึ่งจำเป็นสำหรับการดำเนินการครั้งต่อๆ ไปทั้งหมดในกลุ่มอุปกรณ์
registration_ids ต้องระบุ อาร์เรย์ของสตริง โทเค็นของอุปกรณ์ที่จะเพิ่มหรือนำออก หากคุณนำรายการที่มีอยู่ออกทั้งหมด โทเค็นการลงทะเบียนจากกลุ่มอุปกรณ์ FCM จะลบกลุ่มอุปกรณ์

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

หากต้องการส่งข้อความไปยังกลุ่มอุปกรณ์ ให้ใช้ HTTP v1 API หากขณะนี้คุณ การส่งไปยังกลุ่มอุปกรณ์โดยใช้ API การส่งแบบเดิมที่เลิกใช้งานแล้วสำหรับ HTTP หรือ XMPP หรือเวอร์ชันที่เก่ากว่าของ Firebase Admin SDK สำหรับ Node.js เมื่อพิจารณาโปรโตคอลเดิม เราขอแนะนำให้คุณ ย้ายข้อมูลไปยัง HTTP v1 API โดยเร็วที่สุด API การส่งแบบเดิม จะถูกปิดใช้และนําออกในเดือนมิถุนายน 2024

การส่งข้อความไปยังกลุ่มอุปกรณ์คล้ายกับการส่ง ไปยังอุปกรณ์แต่ละเครื่อง โดยใช้วิธีการเดียวกันในการ ให้สิทธิ์ส่งคำขอ ตั้งค่าtoken กับคีย์การแจ้งเตือนกลุ่ม:

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

คำสั่ง cURL

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send

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

หากต้องการส่งข้อความอัปสตรีมไปยังกลุ่มอุปกรณ์ในแอป Apple ไคลเอ็นต์ Apple ที่จำเป็นต้องใช้งาน FIRMessaging.sendMessage

(void)sendMessage:(nonnull NSDictionary *)message
     to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;