Tài liệu này cung cấp thông tin tham khảo về cú pháp HTTP dùng để truyền thông báo từ máy chủ ứng dụng sang các ứng dụng khách thông qua Giải pháp gửi thông báo qua đám mây của Firebase.
Khi bạn sử dụng giao thức HTTP cũ, máy chủ ứng dụng của bạn phải chuyển tất cả các yêu cầu HTTP đến điểm cuối sau:
https://fcm.googleapis.com/fcm/send
Các thông số và tuỳ chọn có sẵn thuộc các danh mục lớn sau đây:
Cú pháp thông báo xuôi dòng
Phần này cung cấp cú pháp để gửi thông báo về sau và diễn giải phản hồi HTTP qua Giải pháp gửi thông báo qua đám mây của Firebase.
Thông báo HTTP xuôi dòng (JSON)
Bảng sau đây liệt kê các mục tiêu, tuỳ chọn và tải trọng cho thông báo HTTP JSON.
Thông số | Cách sử dụng | Nội dung mô tả | |
---|---|---|---|
Mục tiêu | |||
to |
Chuỗi, không bắt buộc |
Tham số này chỉ định người nhận tin nhắn.
Giá trị này có thể là mã thông báo đăng ký của một thiết bị, khoá thông báo của nhóm thiết bị hoặc một chủ đề duy nhất (có tiền tố là |
|
registration_ids | Mảng chuỗi, không bắt buộc |
Tham số này chỉ định người nhận của một tin nhắn phát đa hướng, một tin nhắn được gửi đến nhiều mã thông báo đăng ký.
Giá trị phải là một mảng mã thông báo đăng ký để gửi thông báo phát đa hướng. Mảng đó phải chứa ít nhất 1 và tối đa 1.000 mã thông báo đăng ký. Để gửi thông báo đến một thiết bị, hãy dùng tham số Tin nhắn truyền đa hướng chỉ được phép ở định dạng HTTP JSON. |
|
condition |
Chuỗi, không bắt buộc | Tham số này chỉ định một biểu thức logic của các điều kiện xác định mục tiêu của thông báo. Điều kiện được hỗ trợ: Chủ đề, có định dạng là ""yourTopic" trong các chủ đề". Giá trị này không phân biệt chữ hoa chữ thường. Các toán tử được hỗ trợ: |
|
notification_key Không dùng nữa |
Chuỗi, không bắt buộc | Tham số này không được dùng nữa. Thay vào đó, hãy sử dụng |
|
Tuỳ chọn | |||
collapse_key |
Chuỗi, không bắt buộc | Tham số này xác định một nhóm tin nhắn (ví dụ: bằng Xin lưu ý rằng chúng tôi không đảm bảo về thứ tự gửi tin nhắn. Lưu ý: Chỉ được phép có tối đa 4 khoá thu gọn khác nhau tại một thời điểm bất kỳ. Điều này có nghĩa là FCM có thể lưu trữ đồng thời 4 thông báo khác nhau cho mỗi ứng dụng. Nếu bạn vượt quá con số này, chúng tôi không đảm bảo sẽ giữ lại 4 phím thu gọn FCM nào. |
|
priority |
Chuỗi, không bắt buộc | Đặt mức độ ưu tiên của thông báo. Các giá trị hợp lệ là "bình thường" và "cao". Trên các nền tảng của Apple, các giá trị này tương ứng với mức độ ưu tiên 5 và 10 của APN. Theo mặc định, thông báo thông báo được gửi với mức độ ưu tiên cao và thông báo dữ liệu được gửi với mức độ ưu tiên bình thường. Chế độ ưu tiên bình thường sẽ tối ưu hoá mức tiêu thụ pin của ứng dụng khách và bạn nên dùng chế độ này trừ phi cần phân phối ngay. Đối với các thông báo có mức độ ưu tiên bình thường, ứng dụng có thể nhận được thông báo có độ trễ không xác định. Khi một thông báo được gửi ở mức độ ưu tiên cao, thông báo đó sẽ được gửi ngay lập tức và ứng dụng có thể hiển thị thông báo. |
|
content_available |
Không bắt buộc, boolean | Trên các nền tảng của Apple, hãy dùng trường này để biểu thị |
|
mutable_content |
Không bắt buộc, boolean JSON | Trên các nền tảng của Apple, hãy dùng trường này để biểu thị |
|
time_to_live |
Không bắt buộc, số | Tham số này chỉ định khoảng thời gian (tính bằng giây) mà tin nhắn cần được lưu trong bộ nhớ FCM nếu thiết bị không có kết nối mạng. Hỗ trợ thời gian tồn tại tối đa là 4 tuần và giá trị mặc định là 4 tuần. Để biết thêm thông tin, hãy xem phần Đặt thời gian tồn tại của một thông báo. |
|
restricted_package_
(chỉ dành cho Android) |
Chuỗi, không bắt buộc | Tham số này chỉ định tên gói của ứng dụng mà mã thông báo đăng ký phải khớp để nhận được thông báo. | |
dry_run |
Không bắt buộc, boolean | Khi đặt tham số này thành Giá trị mặc định là |
|
Tải trọng | |||
data |
Đối tượng, không bắt buộc | Tham số này chỉ định các cặp khoá-giá trị tuỳ chỉnh cho tải trọng thông báo. Ví dụ: với Trên các nền tảng của Apple, nếu thông báo được gửi qua APN, thì tin nhắn đó sẽ đại diện cho các trường dữ liệu tuỳ chỉnh. Nếu được gửi qua FCM, dữ liệu này sẽ được thể hiện dưới dạng từ điển giá trị khoá trong Trên Android, điều này sẽ dẫn đến một ý định có tên bổ sung là Khoá này không được là một từ dành riêng ("từ", "message_type" hoặc bất kỳ từ nào bắt đầu bằng "google" hoặc "gcm"). Đừng sử dụng bất cứ từ nào được xác định trong bảng này (chẳng hạn như Bạn nên sử dụng các giá trị trong loại chuỗi. Bạn phải chuyển đổi các giá trị trong các đối tượng hoặc các kiểu dữ liệu không phải chuỗi khác (ví dụ: số nguyên hoặc boolean) thành chuỗi. |
|
notification |
Đối tượng, không bắt buộc | Tham số này chỉ định các cặp khoá-giá trị được xác định trước mà người dùng thấy được của tải trọng thông báo. Hãy xem phần Hỗ trợ tải trọng thông báo để biết thêm chi tiết.
Để biết thêm thông tin về các tuỳ chọn thông báo và thông báo dữ liệu, hãy xem phần
Các loại thông báo. Nếu tải trọng thông báo được cung cấp hoặc lựa chọn content_available được đặt thành true cho một tin nhắn tới thiết bị Apple, thì tin nhắn sẽ được gửi qua APN, nếu không thì tin nhắn sẽ được gửi qua FCM.
|
Hỗ trợ tải trọng thông báo
Bảng sau đây liệt kê các khoá được xác định trước hiện có để tạo thông báo cho iOS và Android.
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
title |
Chuỗi, không bắt buộc |
Tiêu đề của thông báo. Trường này không hiển thị trên điện thoại và máy tính bảng. |
body |
Chuỗi, không bắt buộc |
Văn bản nội dung của thông báo. |
sound |
Chuỗi, không bắt buộc |
Âm thanh sẽ phát khi thiết bị nhận được thông báo.
Chuỗi chỉ định các tệp âm thanh trong gói chính của ứng dụng khách hoặc trong thư mục |
badge |
Chuỗi, không bắt buộc |
Giá trị của huy hiệu trên biểu tượng ứng dụng trên màn hình chính. Nếu bạn không chỉ định thì huy hiệu sẽ không thay đổi.
Nếu bạn đặt thành |
click_action |
Chuỗi, không bắt buộc |
Hành động liên quan đến việc người dùng nhấp vào thông báo.
Tương ứng với |
subtitle |
Chuỗi, không bắt buộc |
Tiêu đề phụ của thông báo. |
body_loc_key |
Chuỗi, không bắt buộc |
Khoá cho chuỗi nội dung trong tài nguyên chuỗi của ứng dụng để dùng cho việc bản địa hoá văn bản nội dung theo thông tin bản địa hoá hiện tại của người dùng.
Tương ứng với Xem các bài viết Tham khảo về khoá tải trọng và Bản địa hoá nội dung thông báo từ xa để biết thêm thông tin. |
body_loc_args |
Mảng JSON dưới dạng chuỗi (không bắt buộc) |
Các giá trị chuỗi biến được dùng thay cho thông số định dạng trong
Tương ứng với Xem các bài viết Tham khảo về khoá tải trọng và Bản địa hoá nội dung thông báo từ xa để biết thêm thông tin. |
title_loc_key |
Chuỗi, không bắt buộc |
Khoá cho chuỗi tiêu đề trong tài nguyên chuỗi của ứng dụng để dùng cho việc bản địa hoá văn bản tiêu đề theo thông tin bản địa hoá hiện tại của người dùng.
Tương ứng với Xem các bài viết Tham khảo về khoá tải trọng và Bản địa hoá nội dung thông báo từ xa để biết thêm thông tin. |
title_loc_args |
Mảng JSON dưới dạng chuỗi (không bắt buộc) |
Các giá trị chuỗi của biến được dùng thay cho thông số định dạng trong
Tương ứng với Xem các bài viết Tham khảo về khoá tải trọng và Bản địa hoá nội dung thông báo từ xa để biết thêm thông tin. |
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
title |
Chuỗi, không bắt buộc |
Tiêu đề của thông báo. |
body |
Chuỗi, không bắt buộc |
Văn bản nội dung của thông báo. |
android_channel_id |
Chuỗi, không bắt buộc |
mã nhận dạng kênh của thông báo (mới có trong Android O). Ứng dụng phải tạo một kênh có mã nhận dạng kênh này thì mới nhận được thông báo có mã nhận dạng kênh này. Nếu bạn không gửi mã nhận dạng kênh này trong yêu cầu hoặc nếu mã nhận dạng kênh mà ứng dụng cung cấp chưa được ứng dụng tạo, thì FCM sẽ sử dụng mã nhận dạng kênh được chỉ định trong tệp kê khai ứng dụng. |
icon |
Chuỗi, không bắt buộc |
Biểu tượng của thông báo.
Đặt biểu tượng thông báo thành |
sound |
Chuỗi, không bắt buộc |
Âm thanh sẽ phát khi thiết bị nhận được thông báo.
Hỗ trợ |
tag |
Chuỗi, không bắt buộc |
Giá trị nhận dạng dùng để thay thế các thông báo hiện có trong ngăn thông báo. Nếu bạn không chỉ định, mỗi yêu cầu sẽ tạo ra một thông báo mới. Nếu được chỉ định và một thông báo có cùng thẻ đang hiển thị, thì thông báo mới sẽ thay thế thông báo hiện có trong ngăn thông báo. |
color |
Chuỗi, không bắt buộc |
Màu biểu tượng của thông báo, được thể hiện ở định dạng |
click_action |
Chuỗi, không bắt buộc |
Hành động liên quan đến việc người dùng nhấp vào thông báo. Nếu được chỉ định, một hoạt động có bộ lọc ý định trùng khớp sẽ được chạy khi người dùng nhấp vào thông báo. |
body_loc_key |
Chuỗi, không bắt buộc |
Khoá cho chuỗi nội dung trong tài nguyên chuỗi của ứng dụng để dùng cho việc bản địa hoá văn bản nội dung theo thông tin bản địa hoá hiện tại của người dùng. Hãy xem phần Tài nguyên chuỗi để biết thêm thông tin. |
body_loc_args |
Mảng JSON dưới dạng chuỗi (không bắt buộc) |
Các giá trị chuỗi biến được dùng thay cho thông số định dạng trong Hãy xem phần Định dạng và định kiểu để biết thêm thông tin. |
title_loc_key |
Chuỗi, không bắt buộc |
Khoá cho chuỗi tiêu đề trong tài nguyên chuỗi của ứng dụng để dùng cho việc bản địa hoá văn bản tiêu đề theo thông tin bản địa hoá hiện tại của người dùng. Hãy xem phần Tài nguyên chuỗi để biết thêm thông tin. |
title_loc_args |
Mảng JSON dưới dạng chuỗi (không bắt buộc) |
Các giá trị chuỗi của biến được dùng thay cho thông số định dạng trong Hãy xem phần Định dạng và định kiểu để biết thêm thông tin. |
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
title |
Chuỗi, không bắt buộc |
Tiêu đề của thông báo. |
body |
Chuỗi, không bắt buộc |
Văn bản nội dung của thông báo. |
icon |
Chuỗi, không bắt buộc |
URL để sử dụng cho biểu tượng của thông báo. |
click_action |
Chuỗi, không bắt buộc |
Hành động liên quan đến việc người dùng nhấp vào thông báo. Đối với tất cả các giá trị URL, HTTPS là bắt buộc. |
Thông báo HTTP xuôi dòng (Văn bản thuần tuý)
Bảng sau đây liệt kê cú pháp cho mục tiêu, tuỳ chọn và tải trọng trong các thông điệp HTTP truyền xuống dưới dạng văn bản thuần tuý.
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
Mục tiêu | ||
registration_id |
Bắt buộc, chuỗi | Tham số này chỉ định các ứng dụng khách (mã thông báo đăng ký) nhận thông báo. Chỉ cho phép gửi tin nhắn đa hướng (gửi tới nhiều mã thông báo đăng ký) ở định dạng HTTP JSON. |
Tuỳ chọn | ||
collapse_key |
Chuỗi, không bắt buộc | Xem bảng 1 để biết thông tin chi tiết. |
time_to_live |
Không bắt buộc, số | Xem bảng 1 để biết thông tin chi tiết. |
restricted_package_name |
Chuỗi, không bắt buộc | Xem bảng 1 để biết thông tin chi tiết. |
dry_run |
Không bắt buộc, boolean | Xem bảng 1 để biết thông tin chi tiết. |
Tải trọng | ||
data.<key> |
Chuỗi, không bắt buộc | Tham số này chỉ định các cặp khoá-giá trị của tải trọng thông báo. Không có giới hạn về số lượng thông số khoá-giá trị, nhưng có tổng kích thước thông báo là 4.096 byte. Ví dụ: trong Android, Khoá này không được là một từ dành riêng ("từ", "message_type" hoặc bất kỳ từ nào bắt đầu bằng "google" hoặc "gcm"). Không sử dụng bất kỳ từ nào được xác định trong bảng này (chẳng hạn như |
Diễn giải phản hồi thông báo xuôi dòng
Máy chủ ứng dụng sẽ đánh giá cả tiêu đề phản hồi tin nhắn và nội dung để diễn giải phản hồi tin nhắn được gửi từ FCM. Bảng sau đây mô tả các phản hồi có thể có.
Phản hồi | Nội dung mô tả |
---|---|
200 | Đã xử lý thư thành công. Nội dung phản hồi sẽ chứa thêm thông tin chi tiết về trạng thái thông báo, nhưng định dạng sẽ phụ thuộc vào việc yêu cầu là JSON hay văn bản thuần tuý. Xem bảng 5 để biết thêm thông tin chi tiết. |
400 | Chỉ áp dụng cho các yêu cầu JSON. Cho biết không thể phân tích cú pháp yêu cầu dưới dạng JSON hoặc yêu cầu chứa các trường không hợp lệ (ví dụ: truyền một chuỗi với một số được mong đợi). Lý do không thành công được mô tả chính xác trong phản hồi và vấn đề cần được giải quyết trước khi có thể thử lại yêu cầu. |
401 | Đã xảy ra lỗi khi xác thực tài khoản người gửi. |
5xx | Các lỗi trong phạm vi 500-599 (chẳng hạn như 500 hoặc 503) cho biết đã xảy ra lỗi nội bộ trong phần phụ trợ FCM khi cố gắng xử lý yêu cầu hoặc máy chủ tạm thời không hoạt động (ví dụ: do hết thời gian chờ). Người gửi phải thử lại sau, tôn trọng bất kỳ tiêu đề Retry-After nào có trong phản hồi. Máy chủ ứng dụng phải triển khai thời gian đợi luỹ thừa. |
Bảng sau đây liệt kê các trường trong nội dung phản hồi thông báo xuôi dòng (JSON).
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
multicast_id |
Bắt buộc, số | Mã nhận dạng duy nhất (số) xác định thông điệp phát đa hướng. |
success |
Bắt buộc, số | Số thư đã được xử lý mà không có lỗi. |
failure |
Bắt buộc, số | Số thư không thể xử lý được. |
results |
Mảng đối tượng bắt buộc | Mảng gồm các đối tượng biểu thị trạng thái của các thông báo đã được xử lý. Các đối tượng được liệt kê theo cùng thứ tự với yêu cầu (tức là đối với mỗi mã đăng ký trong yêu cầu, kết quả của yêu cầu đó sẽ được liệt kê trong cùng một chỉ mục trong phản hồi).
|
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
message_id |
Không bắt buộc, số | Mã nhận dạng tin nhắn chủ đề khi FCM nhận được yêu cầu thành công và sẽ tìm cách gửi tới tất cả các thiết bị đã đăng ký. |
error |
Chuỗi, không bắt buộc | Đã xảy ra lỗi khi xử lý thư. Bạn có thể xem các giá trị có thể có trong bảng 9. |
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
id |
Bắt buộc, chuỗi | Tham số này chỉ định mã nhận dạng tin nhắn duy nhất FCM được xử lý thành công. |
registration_id |
Chuỗi, không bắt buộc | Tham số này chỉ định mã thông báo đăng ký cho ứng dụng khách mà thông báo đã được xử lý và gửi đến. |
Thông số | Cách sử dụng | Nội dung mô tả |
---|---|---|
Error |
Bắt buộc, chuỗi | Tham số này chỉ định giá trị lỗi trong khi xử lý thư cho người nhận. Xem bảng 9 để biết thông tin chi tiết. |
Mã phản hồi lỗi thông báo xuôi dòng
Bảng sau đây liệt kê các mã phản hồi lỗi cho các thông báo tiếp theo.
Lỗi | Mã HTTP | Việc nên làm |
---|---|---|
Thiếu mã thông báo đăng ký | 200 + lỗi:MissingSubscription | Kiểm tra để đảm bảo yêu cầu chứa mã thông báo đăng ký (trong registration_id trong tin nhắn văn bản thuần tuý hoặc trong trường to hay registration_ids trong JSON). |
Mã thông báo đăng ký không hợp lệ | 200 + lỗi:Đăng ký không hợp lệ | Kiểm tra định dạng của mã thông báo đăng ký mà bạn truyền đến máy chủ. Hãy đảm bảo mã này khớp với mã thông báo đăng ký mà ứng dụng khách nhận được khi đăng ký bằng Thông báo Firebase. Đừng cắt bớt hoặc thêm các ký tự bổ sung. |
Thiết bị chưa đăng ký | 200 + lỗi:Chưa đăng ký | Mã thông báo đăng ký hiện có có thể không còn hiệu lực trong một số trường hợp, bao gồm:
|
Tên gói không hợp lệ | 200 + error:InvalidPackageName | Đảm bảo thư được gửi tới một mã thông báo đăng ký có tên gói khớp với giá trị được chuyển trong yêu cầu. |
Lỗi xác thực | 401 | Không thể xác thực tài khoản người gửi dùng để gửi thư. Nguyên nhân có thể là:
|
Người gửi không khớp | 200 + lỗi:MismatchSenderId | Mã thông báo đăng ký được liên kết với một nhóm người gửi nhất định. Khi ứng dụng khách đăng ký FCM, ứng dụng khách phải chỉ định người gửi nào được phép gửi tin nhắn. Bạn nên sử dụng một trong các mã nhận dạng người gửi đó khi gửi tin nhắn đến ứng dụng khách. Nếu chuyển sang một người gửi khác, mã thông báo đăng ký hiện có sẽ không hoạt động. |
JSON không hợp lệ | 400 | Kiểm tra để đảm bảo thông báo JSON được định dạng đúng cách và chứa các trường hợp lệ (ví dụ: đảm bảo truyền đúng loại dữ liệu). |
Tham số Không hợp lệ | 400 + lỗi:InvalidParameters | Kiểm tra để đảm bảo rằng các thông số đã cung cấp có tên và loại đúng. |
Thư quá lớn | 200 + lỗi:MessageTooBig | Kiểm tra để đảm bảo rằng tổng kích thước của dữ liệu tải trọng có trong một tin nhắn không vượt quá giới hạn FCM: 4096 byte đối với hầu hết tin nhắn hoặc 2048 byte đối với tin nhắn đến chủ đề. Phương thức này bao gồm cả khoá và giá trị. |
Khoá dữ liệu không hợp lệ | 200 + lỗi:
InvalidDataKey |
Kiểm tra để đảm bảo rằng dữ liệu tải trọng không chứa khoá (chẳng hạn như from hoặc gcm hoặc bất kỳ giá trị nào có tiền tố google ) mà FCM sử dụng nội bộ. Xin lưu ý rằng một số từ (chẳng hạn như collapse_key ) cũng được FCM sử dụng nhưng được cho phép trong tải trọng. Trong trường hợp này, giá trị tải trọng sẽ bị giá trị FCM ghi đè. |
Thời gian tồn tại không hợp lệ | 200 + lỗi:InvalidTtl | Kiểm tra để đảm bảo giá trị dùng trong time_to_live là một số nguyên đại diện cho thời lượng tính bằng giây từ 0 đến 2.419.200 (4 tuần). |
Lần bị tạm ngừng | 5xx hoặc 200 + lỗi:Không có sẵn | Máy chủ không thể xử lý yêu cầu kịp thời. Thử gửi lại cùng một yêu cầu, nhưng bạn phải:
Người gửi gây ra sự cố có nguy cơ bị đưa vào danh sách đen. |
Lỗi máy chủ nội bộ | Giá trị 500 hoặc 200 + lỗi:InternalServerError | Máy chủ đã gặp lỗi trong khi cố gắng xử lý yêu cầu. Bạn có thể thử lại yêu cầu tương tự theo các yêu cầu liệt kê trong phần "Thời gian chờ" (xem hàng ở trên). Nếu lỗi vẫn tiếp diễn, vui lòng liên hệ với bộ phận hỗ trợ của Firebase. |
Đã vượt quá tốc độ tin nhắn trên thiết bị | 200 trở lên:
DeviceMessageRate Đã vượt quá |
Tốc độ tin nhắn đến một thiết bị cụ thể quá cao. Nếu một ứng dụng của Apple gửi tin nhắn với tốc độ vượt quá giới hạn của APN, ứng dụng đó có thể nhận được thông báo lỗi này Hãy giảm số lượng tin nhắn gửi đến thiết bị này và sử dụng thời gian đợi theo cấp số nhân để thử gửi lại. |
Đã vượt quá tốc độ tin nhắn chủ đề | Hơn 200 lỗi:
TopicsMessageRate Đã vượt quá |
Tỷ lệ tin nhắn đến người đăng ký tới một chủ đề cụ thể quá cao. Hãy giảm số lượng tin nhắn được gửi cho chủ đề này và sử dụng thời gian đợi theo cấp số nhân để thử gửi lại. |
Thông tin xác thực APN không hợp lệ | 200 + lỗi:
InvalidApnsCredential |
Không thể gửi một thông báo nhắm đến một thiết bị Apple vì khoá xác thực APN bắt buộc chưa được tải lên hoặc đã hết hạn. Kiểm tra tính hợp lệ của thông tin đăng nhập vào quá trình phát triển và phát hành chính thức. |
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ư cách thêm và xoá thành viên. Để biết thêm thông tin, hãy xem hướng dẫn dành cho nền tảng của bạn, iOS+ hoặc Android.
Thông số | Cách sử dụng | Nội dung 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 , add và remove . |
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ừ toán tử 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 thao tác create thành công và là giá trị 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 |
Mảng chuỗi bắt buộc | 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ị, FCM sẽ xoá nhóm thiết bị đó. |