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