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

Tính năng nhắn tin nhóm thiết bị cho phép bạn thêm nhiều thiết bị vào một nhóm. Tính năng này tương tự như tính năng nhắn tin theo chủ đề, nhưng có thêm bước xác thực để đảm bảo rằng chỉ máy chủ của bạn mới quản lý tư cách thành viên trong nhóm.

Ví dụ: nếu bạn muốn gửi các tin nhắn khác nhau đến các kiểu điện thoại khác nhau, thì máy chủ của bạn có thể thêm hoặc xoá thông tin đăng ký vào các nhóm thích hợp và gửi tin nhắn thích hợp đến từng nhóm. Tính năng nhắn tin nhóm thiết bị khác với tính năng nhắn tin theo chủ đề ở chỗ tính năng này liên quan đến việc 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 ứng dụng.

Số lượng 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ã thông báo đăng ký cho từng thiết bị mà bạn muốn thêm vào nhóm.
  2. Tạo notification_key, mã này 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) với tất cả mã thông báo đăng ký được 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.

Việc quản lý cơ bản các nhóm thiết bị (tạo và xoá nhóm, thêm hoặc xoá thiết bị) được thực hiện bằng API HTTP v1, sử dụng mã thông báo tồn tại trong thời gian ngắn để uỷ quyền cho các yêu cầu gửi. Hãy xem bài viết 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

Tạo nhóm thiết bị

Để tạo một 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 một 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 mã nhận dạng (ví dụ: có thể là tên người dùng) duy nhất cho một nhóm nhất định. The notification_key_namenotification_key là duy nhất cho một nhóm mã thông báo đăng ký. Điều quan trọng là notification_key_name phải là 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 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 mục tiêu dự kiến.

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

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

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

Lưu notification_keynotification_key_name tương ứng để sử dụng trong các thao tác tiếp theo.

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

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

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 nhất định, máy chủ sẽ trả về một chuỗi được mã hoá duy nhất. Mặc dù mỗi chuỗi có thể xuất hiện dưới dạng một khoá khác nhau, nhưng thực tế đây là 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 một nhóm hiện có, hãy gửi yêu cầu POST với tham số operation được đặt thành add hoặc remove và 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... vào appUser-Chris, bạn sẽ gửi yêu cầu này:

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": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Định dạng của phản hồi

Yêu cầu thành công để thêm hoặc xoá một thiết bị 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ị, thêm và xoá thành viên.

Tham số Cách sử dụng Mô tả
operation Bắt buộc, chuỗi Thao tác cần chạy.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ị cần tạo hoặc sửa đổi.
notification_key Bắt buộc (ngoại trừ thao tác create, chuỗi) Mã 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 thao tác create thành công và là bắt buộc cho tất cả các thao tác tiếp theo trên nhóm thiết bị.
registration_ids Bắt buộc, mảng chuỗi Mã thông báo thiết bị cần thêm hoặc xoá. Nếu bạn xoá tất cả mã thông báo đăng ký hiện có khỏi một nhóm thiết bị, thì FCM sẽ xoá nhóm thiết bị đó.

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

Việc 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 đến một thiết bị riêng lẻ, sử dụng cùng một phương thức để uỷ quyền cho các yêu cầu gửi. Đặt trường token thành 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