Gửi tin nhắn đến các nhóm thiết bị trên Android

Tính năng nhắn tin theo nhóm thiết bị cho phép bạn thêm nhiều thiết bị vào một nhóm duy nhất. Phương thức này tương tự như thông báo theo chủ đề nhưng có thêm bước xác thực để đảm bảo rằng tư cách thành viên trong nhóm chỉ do máy chủ của bạn quản lý. Ví dụ: nếu bạn muốn gửi các tin nhắn khác nhau đến các mẫu điện thoại khác nhau, máy chủ của bạn có thể thêm/xoá các đăng ký đó đến các nhóm phù hợp và gửi thông báo thích hợp cho mỗi nhóm. Thông báo cho nhóm thiết bị khác với hoạt động nhắn tin theo chủ đề ở khía cạnh này quản lý các nhóm thiết bị từ máy chủ của bạn thay vì trực tiếp trong .

Số thành viên tối đa được phép cho một khoá thông báo là 20.

Quản lý nhóm thiết bị

Trước khi gửi tin nhắn đến một nhóm thiết bị, bạn phải:

  1. Lấy mã đăng ký cho từng thiết bị bạn muốn thêm cho nhóm.

  2. Tạo notification_key để xác định nhóm thiết bị bằng cách ánh xạ một nhóm cụ thể (thường là người dùng) cho tất cả mã thông báo đăng ký liên kết của nhóm. Bạn có thể tạo khoá thông báo trên máy chủ ứng dụng.

Quản lý cơ bản các nhóm thiết bị — tạo và xoá nhóm, và thêm hoặc xoá thiết bị — được thực hiện thông qua API HTTP v1, bằng cách sử dụng mã thông báo ngắn hạn để uỷ quyền gửi yêu cầu. Xem Khoá quản lý nhóm thiết bị để biết danh sách các khoá được hỗ trợ.

Quản lý nhóm thiết bị trên máy chủ ứng dụng

Đang tạo một nhóm thiết bị

Để tạo nhóm thiết bị, hãy gửi yêu cầu POST cung cấp tên cho nhóm và danh sách mã thông báo đăng ký cho các thiết bị. FCM trả về một notification_key mới đại diện cho nhóm thiết bị.

Yêu cầu POST qua HTTP

Gửi yêu cầu như sau đến 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 là tên hoặc giá trị nhận dạng (ví dụ: đó có thể là tên người dùng) dành riêng cho một nhóm nhất định. Chiến lược phát hành đĩa đơn notification_key_namenotification_key là mã duy nhất của một nhóm đăng ký mã thông báo. Điều quan trọng là notification_key_name phải duy nhất cho mỗi ứng dụng khách nếu bạn có nhiều ứng dụng khách cho cùng một ứng dụng mã người gửi. Điều này đảm bảo rằng tin nhắn chỉ được gửi đến ứng dụng đích mong muốn.

Định dạng phản hồi

Một yêu cầu thành công sẽ trả về một notification_key như như sau:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Lưu notification_key và các thuộc tính tương ứng notification_key_name để sử dụng trong các thao tác tiếp theo.

Truy xuất khoá thông báo

Nếu bạn cần truy xuất khoá thông báo hiện có, hãy sử dụng notification_key_name trong một yêu cầu GET như sau:

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
{}

Đối với mỗi yêu cầu GET cho một tên khoá thông báo đã cho, máy chủ trả về một chuỗi được mã hoá duy nhất. Mặc dù mỗi chuỗi có thể trông giống như một khoá khác, thì đó thực ra là một giá trị "notification_key" hợp lệ.

Thêm và xoá thiết bị khỏi nhóm thiết bị

Để thêm hoặc xoá thiết bị khỏi nhóm hiện có, hãy gửi yêu cầu POST yêu cầu có thông số operation được đặt thành add hoặc remove, đồng thời cung cấp mã thông báo đăng ký để thêm hoặc xoá.

Yêu cầu POST qua HTTP

Ví dụ: để thêm một thiết bị có mã thông báo đăng ký bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... đến appUser-Chris, bạn sẽ gửi yêu cầu sau:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

Định dạng phản hồi

Yêu cầu thêm hoặc xoá một thiết bị thành công sẽ trả về một notification_key như sau:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Khoá quản lý nhóm thiết bị

Bảng sau đây liệt kê các khoá để tạo nhóm thiết bị cũng như thêm và xoá thành viên.

Bảng 10. Khoá quản lý nhóm thiết bị.

Thông số Cách sử dụng Mô tả
operation Bắt buộc, chuỗi Thao tác cần thực hiện.Các giá trị hợp lệ là create, addremove.
notification_key_name Bắt buộc, chuỗi Tên do người dùng xác định của nhóm thiết bị để tạo hoặc sửa đổi.
notification_key Bắt buộc (ngoại trừ thao tác create, chuỗi Giá trị nhận dạng duy nhất của nhóm thiết bị. Giá trị này được trả về trong phản hồi cho một create thành công hoạt động và là bắt buộc đối với tất cả các thao tác tiếp theo trên nhóm thiết bị.
registration_ids Mảng chuỗi bắt buộc Mã thông báo thiết bị để thêm hoặc xoá. Nếu bạn xoá tất cả cụm từ hiện có mã thông báo đăng ký khỏi một nhóm thiết bị, FCM sẽ xoá nhóm thiết bị đó.

Gửi tin nhắn đến các nhóm thiết bị

Để gửi thông báo đến các nhóm thiết bị, hãy sử dụng API HTTP phiên bản 1. Nếu bạn đang gửi đến các nhóm thiết bị bằng API gửi cũ không dùng nữa cho HTTP hay XMPP hay bất kỳ phiên bản cũ nào của Firebase Admin SDK cho Node.js dựa trên các giao thức cũ, chúng tôi đặc biệt khuyên bạn di chuyển sang API HTTP phiên bản 1 trong thời gian sớm nhất có thể. API gửi cũ sẽ bị vô hiệu hoá và bị xoá vào tháng 6 năm 2024.

Cách gửi tin nhắn đến một nhóm thiết bị rất giống với việc gửi tin nhắn tin nhắn đến một thiết bị riêng lẻ, sử dụng cùng một phương pháp để uỷ quyền gửi yêu cầu. Đặt token vào khoá thông báo nhóm:

Kiến trúc chuyển trạng thái đại diện (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!"
      }
   }
}

Lệnh 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