Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

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

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 duy nhất. Điều này tương tự như nhắn tin theo chủ đề, nhưng bao gồm xác thực để đảm bảo rằng tư cách thành viên nhóm chỉ được quản lý bởi máy chủ của bạn. 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, máy chủ của bạn có thể thêm / xóa đă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. Nhắn tin nhóm thiết bị khác với nhắn tin chủ đề ở chỗ nó 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 của bạn.

Bạn có thể sử dụng tính năng nhắn tin nhóm thiết bị thông qua giao thức XMPP hoặc HTTP kế thừa trên máy chủ ứng dụng của mình. SDK quản trị Firebase cho Node.js dựa trên giao thức cũ cũng cung cấp khả năng nhắn tin nhóm thiết bị. Số lượng thành viên tối đa được phép cho một khóa 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. Nhận mã thông báo đăng ký cho từng thiết bị bạn muốn thêm vào nhóm.

  2. Tạo khóa 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) với tất cả các mã thông báo đăng ký được liên kết của nhóm. Bạn có thể tạo khóa thông báo trên máy chủ ứng dụng hoặc trên ứng dụng khách Android.

Quản lý cơ bản của nhóm thiết bị - tạo và xóa nhóm, thêm hoặc xóa thiết bị - thường được thực hiện thông qua máy chủ ứng dụng. Xem tham chiếu giao thức HTTP kế thừa để biết danh sách các khóa được hỗ trợ.

Theo tùy chọn, các ứng dụng khách Android có thể quản lý các nhóm thiết bị từ phía máy khách.

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 nhóm thiết bị, hãy gửi yêu cầu ĐĂNG cung cấp tên cho nhóm và danh sách mã thông báo đăng ký cho thiết bị. FCM trả về một phím notification_key mới đại diện cho nhóm thiết bị.

Yêu cầu HTTP POST

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
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 là tên hoặc số nhận dạng (ví dụ: nó có thể là tên người dùng) là duy nhất cho một nhóm nhất định. notification_key_name notification_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 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 ID 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 đã định.

Đị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ư sau:

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

Save the notification_key và tương ứng notification_key_name để sử dụng trong các hoạt động tiếp theo.

Truy xuất khóa thông báo

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

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

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

Thêm và xóa thiết bị khỏi một nhóm thiết bị

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

Yêu cầu HTTP POST

Ví dụ: để thêm một thiết bị có ID đăng ký 51 vào 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": ["51"]
}

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

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

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

Gửi tin nhắn xuôi dòng tới các nhóm thiết bị

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ẻ. Đặt to tham số để chìa khóa thông báo duy nhất cho nhóm thiết bị. Xem Các loại thông báo để biết chi tiết về hỗ trợ tải trọng. Các ví dụ trong trang này cho biết cách gửi thông báo dữ liệu đến các nhóm thiết bị trong giao thức HTTP và XMPP.

Yêu cầu HTTP POST của nhóm thiết bị

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!",
   }
}

Phản hồi HTTP của nhóm thiết bị

Đây là một ví dụ về "thành công" - notification_key có 2 mã thông báo đăng ký được liên kết với nó và thông báo đã được gửi thành công cho cả hai:

{
  "success": 2,
  "failure": 0
}

Đây là một ví dụ về "thành công một phần" - notification_key có 3 mã thông báo đăng ký được liên kết với nó. Tin nhắn chỉ được gửi thành công đến 1 trong các mã thông báo đăng ký. Thông báo phản hồi liệt kê các mã thông báo đăng ký không nhận được thông báo:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Khi thông báo không được gửi đến một hoặc nhiều mã thông báo đăng ký được liên kết với một khóa notification_key , máy chủ ứng dụng sẽ thử lại với thời gian chờ giữa các lần thử lại.

Nếu máy chủ cố gắng gửi tin nhắn đến một nhóm thiết bị không có thành viên, phản hồi sẽ giống như sau, với 0 thành công và 0 thất bại:

{
  "success": 0,
  "failure": 0
}

Thông báo XMPP của Nhóm thiết bị

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

Phản hồi XMPP của nhóm thiết bị

Khi tin nhắn được gửi đến bất kỳ thiết bị nào trong nhóm thành công, máy chủ kết nối XMPP sẽ phản hồi bằng ACK. Nếu tất cả các tin nhắn được gửi đến tất cả các thiết bị trong nhóm không thành công, máy chủ kết nối XMPP sẽ phản hồi bằng NACK.

Đây là một ví dụ về "thành công" - notification_key có 3 mã thông báo đăng ký được liên kết với nó và thông báo đã được gửi thành công đến tất cả chúng:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Đây là một ví dụ về "thành công một phần" - notification_key có 3 mã thông báo đăng ký được liên kết với nó. Tin nhắn chỉ được gửi thành công đến 1 trong các mã thông báo đăng ký. Thông báo phản hồi liệt kê các mã thông báo đăng ký không nhận được thông báo:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Khi máy chủ kết nối FCM không phân phối được đến tất cả các thiết bị trong nhóm. Máy chủ ứng dụng sẽ nhận được phản hồi nack.

Để có danh sách đầy đủ các tùy chọn thông báo, hãy xem thông tin tham khảo cho giao thức máy chủ kết nối bạn đã chọn, HTTP hoặc XMPP .

Gửi tin nhắn ngược dòng tới các nhóm thiết bị

Để gửi tin nhắn ngược dòng tới các nhóm thiết bị trên iOS, ứng dụng khách iOS cần triển khai FIRMessaging.sendMessage :

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