Giao thức HTTP của Giải pháp gửi thông báo qua đám mây của Firebase

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 tin nhắn từ máy chủ ứng dụng của bạn đến 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 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 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 chính 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ừ Giải pháp gửi thông báo qua đám mây của Firebase.

Thông báo HTTP truyền xuố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 JSON HTTP.

Bảng 1. Mục tiêu, tuỳ chọn và tải trọng cho thông báo HTTP xuôi dòng (JSON).

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à /topics/). Để gửi đến nhiều chủ đề, hãy sử dụng Tham số condition.

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ị phải là một mảng mã thông báo đăng ký để gửi thông báo truyền đa hướng. 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 tin nhắn tới một thiết bị, hãy sử dụng Tham số to.

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 thông báo.

Điều kiện được hỗ trợ: Chủ đề, có định dạng là ""yourTopics" trong chủ đề". Chiến dịch này không phân biệt chữ hoa chữ thường.

Các toán tử được hỗ trợ: &&, ||. Tối đa 2 toán tử cho mỗi thông báo chủ đề đượ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 to để chỉ định người nhận thư. Để biết thêm thông tin về cách gửi tin nhắn tới nhiều thiết bị, hãy xem tài liệu dành cho nền tảng của bạn.

Lựa chọn
collapse_key Chuỗi không bắt buộc

Thông số này xác định một nhóm thông báo (ví dụ: có collapse_key: "Updates Available") có thể thu gọn được để chỉ thông báo cuối cùng sẽ được gửi khi có thể tiếp tục gửi. Thông báo này nhằm tránh việc gửi nhiều thông báo giống nhau khi thiết bị trở lại trực tuyến hoặc hoạt động.

Xin lưu ý rằng chúng tôi không thể đảm bảo thứ tự gửi thư.

Lưu ý: Mỗi thời điểm chỉ được phép có tối đa 4 phím 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 khác nhau trên 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 Chuỗi không bắt buộc

Đặ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ị content-available trong tải trọng APN. Khi một thông báo hoặc tin nhắn được gửi đi và bạn đặt tuỳ chọn này thành true, thì ứng dụng khách không hoạt động sẽ được đánh thức và tin nhắn được gửi qua APN dưới dạng thông báo im lặng chứ không thông qua FCM. Lưu ý rằng thông báo im lặng trong APN không được đảm bảo được phân phối và có thể phụ thuộc vào các yếu tố như việc người dùng bật Chế độ tiết kiệm pin Chế độ buộc thoát ứng dụng, v.v. Trên Android, thông báo dữ liệu sẽ đánh thức ứng dụng theo mặc định. Bật Chrome, hiện không được hỗ trợ.

mutable_content Giá trị boolean JSON không bắt buộc

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 trong tải trọng APN. Khi một thông báo được gửi và cài đặt này được đặt vào true, nội dung thông báo có thể được sửa đổi trước khi hiển thị, sử dụng Phần mở rộng về ứng dụng Dịch vụ thông báo. Tham số này sẽ bị bỏ qua đối với Android và web.

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ối đa để phát trực tiếp đượ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_
name
(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 thì mới nhận được thông báo.
dry_run Giá trị boolean

Khi bạn đặt tham số này thành true, tham số này sẽ cho phép nhà phát triển thử nghiệm một mà không thực sự gửi tin nhắn.

Giá trị mặc định là false.

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 trong tải trọng của thông báo.

Ví dụ: với data:{"score":"3x1"}:

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 AppDelegate application:didReceiveRemoteNotification:.

Trên Android, điều này sẽ dẫn đến một ý định bổ sung có tên score với giá trị chuỗi là 3x1.

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ư collapse_key).

Bạn nên sử dụng các giá trị trong 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 Đố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, 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ợ tải trọng 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.

Bảng 2a. iOS – các khoá cho tin nhắn thông báo

Thông số Cách sử dụng 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 tệp âm thanh trong gói chính của ứng dụng khách hoặc trong Thư mục Library/Sounds của vùng chứa dữ liệu của ứng dụng. Xem Thư viện dành cho nhà phát triển iOS để biết thêm thông tin.

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 0 thì huy hiệu sẽ bị xoá.

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 category trong tải trọng APN.

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 để 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 loc-key trong tải trọng APN.

Xem Tài liệu tham khảo khoá tải trọng Bản địa hoá nội dung của thông báo từ xa để biết thêm của bạn.

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 body_loc_key dùng để bản địa hoá văn bản nội dung thành nội dung bản địa hoá hiện tại của người dùng.

Tương ứng với loc-args trong tải trọng APN.

Xem Tài liệu tham khảo khoá tải trọng Bản địa hoá nội dung của thông báo từ xa để biết thêm của bạn.

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 để 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 title-loc-key trong tải trọng APN.

Xem Tài liệu tham khảo khoá tải trọng Bản địa hoá nội dung của thông báo từ xa để biết thêm của bạn.

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 title_loc_key dùng để bản địa hoá văn bản tiêu đề thành nội dung bản địa hoá hiện tại của người dùng.

Tương ứng với title-loc-args trong tải trọng APN.

Xem Tài liệu tham khảo khoá tải trọng Bản địa hoá nội dung của thông báo từ xa để biết thêm của bạn.

Bảng 2b. Android – các phím cho tin nhắn thông báo

Thông số Cách sử dụng 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ã kênh của thông báo (mới trong Android O).

Ứng dụng phải tạo một kênh bằng mã nhận dạng kênh này trước khi có bất kỳ thông báo nào có mã nhận dạng kênh này đã nhận được.

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 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 myicon cho tài nguyên có thể vẽ myicon. Nếu không gửi khoá này trong yêu cầu, FCM hiển thị biểu tượng trình chạy được chỉ định trong tệp kê khai ứng dụng của bạn.

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ợ "default" hoặc tên tệp của một tài nguyên âm thanh được đóng gói trong ứng dụng. Các tệp âm thanh phải nằm trong /res/raw/.

tag Chuỗi không bắt buộc

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à thông báo có cùng thẻ đang được 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 #rrggbb.

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.

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 để 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.

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 body_loc_key dùng để bản địa hoá văn bản nội dung thành nội dung bản địa hoá hiện tại của người dùng.

Xem Đị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 để 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.

Xem 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 title_loc_key dùng để bản địa hoá văn bản tiêu đề thành nội dung bản địa hoá hiện tại của người dùng.

Xem Định dạng và định kiểu để biết thêm thông tin.

Bảng 2c. Web (JavaScript) – các khoá cho tin nhắn thông báo

Thông số Cách sử dụng 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 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 mục tiêu, tuỳ chọn và tải trọng ở dạng đơn giản tin nhắn HTTP xuôi dòng.

Bảng 3. Mục tiêu, tuỳ chọn và tải trọng cho thông báo HTTP dạng văn bản thuần tuý hạ nguồn.

Thông số Cách sử dụng Mô tả
Mục tiêu
registration_id Bắt buộc, chuỗi

Tham số này chỉ định những ứng dụng khách (mã thông báo đăng ký) nhận được thông báo.

Chỉ cho phép gửi tin nhắn đ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 Chuỗi không bắt buộc 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 Chuỗi không bắt buộc Xem bảng 1 để biết chi tiết.
dry_run Giá trị boolean Xem bảng 1 để biết 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ị trong tải trọng của thông báo. Không có giới hạn về số lượng thông số khoá-giá trị, nhưng có giới hạn tổng kích thước thư là 4.096 byte.

Ví dụ: trong Android, "data.score"."3x1" sẽ dẫn đến một ý định bổ sung có tên score bằng giá trị chuỗi 3x1.

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ư collapse_key).

Diễn giải nội dung phản hồi cho tin nhắn tiếp theo

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 gửi từ FCM. Bảng sau đây mô tả các phản hồi có thể có.

Bảng 4. Tiêu đề phản hồi của thông báo HTTP xuôi dòng.

Phản hồi Mô tả
200 Thư đã được xử lý thành công. Nội dung phản hồi sẽ chứa nhiều thông tin chi tiết về trạng thái thông báo, nhưng định dạng của thông báo sẽ phụ thuộc vào việc yêu cầu là JSON hoặc văn bản thuần tuý. Xem bảng 5 để biết thêm 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 chứa yêu cầu không hợp lệ (ví dụ: truyền một chuỗi 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 khoảng 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 thuật toán 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).

Bảng 5. Nội dung phản hồi thông báo HTTP truyền xuống (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 có 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 gồm các đối tượng thể hiện trạng thái của thông báo được xử lý. Chiến lược phát hành đĩa đơn các đối tượng được liệt kê theo cùng thứ tự như yêu cầu (tức là cho mỗi lần đăng ký Mã nhận dạng trong yêu cầu, kết quả của yêu cầu đó được liệt kê trong cùng chỉ mục trong phản hồi).
  • message_id: Chuỗi chỉ định một mã nhận dạng duy nhất cho mỗi mã được xử lý thành công .
  • error: Chuỗi chỉ định lỗi xảy ra khi xử lý cho người nhận. Bạn có thể xem các giá trị có thể có trong bảng 9.

Bảng 6. Nội dung phản hồi HTTP của thông báo theo chủ đề (JSON).

Thông số Cách sử dụng Mô tả
message_id Số (không bắt buộc) Mã của tin nhắn chủ đề khi FCM đã nhận thành công yêu cầu và sẽ cố gắng phân phối đến tất 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.

Bảng 7. Phản hồi thành công cho nội dung phản hồi thông báo HTTP xuôi dòng (Văn bản thuần tuý).

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ư 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 chứa thông báo đó được xử lý và gửi tới.

Bảng 8. Phản hồi lỗi cho nội dung phản hồi thông báo HTTP xuôi dòng (Văn bản thuần tuý).

Thông số Cách sử dụng Mô tả
Error Bắt buộc, chuỗi Tham số này chỉ định giá trị lỗi trong khi xử lý tin nhắn cho người nhận. Xem bảng 9 để biết chi tiết.

Mã phản hồi lỗi của tin nhắn 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 thứ cấp.

Bảng 9. Mã phản hồi lỗi của tin nhắn xuôi dòng.

Lỗi Mã HTTP Việc nên làm
Thiếu mã thông báo đăng ký 200 + lỗi:Thiếu đăng ký 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 + lỗi: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 được đăng ký 200 + lỗi:Chưa đăng ký Mã thông báo đăng ký hiện có có thể hết hiệu lực trong một số trường hợp, bao gồm:
  • Nếu ứng dụng khách huỷ đăng ký bằng FCM.
  • Nếu ứng dụng khách tự động bị huỷ đăng ký, điều này có thể xảy ra nếu người dùng gỡ cài đặt ứng dụng. Ví dụ: trên iOS, nếu APN Dịch vụ phản hồi đã báo cáo mã thông báo APN là không hợp lệ.
  • Nếu mã thông báo đăng ký đã hết hạn (ví dụ: Google có thể quyết định làm mới mã đăng ký hoặc mã thông báo APN đã hết hạn đối với thiết bị iOS).
  • Nếu ứng dụng khách được cập nhật nhưng phiên bản mới chưa được định cấu hình để nhận thông báo.
Đối với tất cả các trường hợp nêu trên, hãy xoá mã thông báo đăng ký này khỏi ứng dụng máy chủ và ngừng sử dụng nó để gửi thư.
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ư. Nguyên nhân có thể là:
  • Thiếu tiêu đề uỷ quyền hoặc có cú pháp không hợp lệ trong yêu cầu HTTP.
  • Dự án Firebase chứa khoá máy chủ được chỉ định này không chính xác.
  • Chỉ khoá máy chủ cũ – yêu cầu bắt nguồn từ một máy chủ không có trong danh sách IP của khoá máy chủ.
Kiểm tra xem mã thông báo mà bạn đang gửi trong tiêu đề Xác thực có phải là đúng khoá máy chủ được liên kết với dự án của bạn. Xem Kiểm tra tính hợp lệ của khoá máy chủ để biết thông tin chi tiết. Nếu bạn đang sử dụng khoá máy chủ cũ, bạn nên nâng cấp lên khoá mới không có giới hạn về IP. Xem Di chuyển khoá máy chủ cũ.
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, hệ thống phải chỉ định người gửi nào đượ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 thông báo JSON được định dạng đúng 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 các thông số đã cung cấp có tên và loại phù hợp.
Tin nhắn 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 thông báo không vượt quá giới hạn FCM: 4096 byte đối với hầu hết các thư hoặc 2048 byte đối với trường hợp thư đến chủ đề. Bao gồm cả các khoá và giá trị.
Khoá dữ liệu không hợp lệ 200 + lỗi:
Không hợp lệ khoá dữ liệu
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 giá trị bất kỳ có tiền tố google) được FCM sử dụng nội bộ. 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 đó trong trường hợp 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 xem giá trị dùng trong time_to_live có phải là số nguyên đại diện cho thời gian tính bằng giây trong khoảng từ 0 đến 2.419.200 (4 tuần).
Hết giờ 5xx hoặc 200 + error:Không có

Máy chủ không thể xử lý yêu cầu kịp thời. Hãy thử yêu cầu lại, nhưng bạn phải:

  • Tuân thủ tiêu đề Retry-After nếu tiêu đề này được đưa vào phản hồi từ Máy chủ kết nối FCM.
  • Triển khai thuật toán thời gian đợi luỹ thừa trong cơ chế thử lại của bạn. (ví dụ: nếu bạn đã chờ một giây trước lần thử lại đầu tiên, hãy đợi ít nhất hai giây trước lần thử tiếp theo, sau đó chờ 4 giây và cứ tiếp tục như vậy). Nếu bạn đang gửi nhiều thư, hãy trì hoãn từng thư một cách độc lập với một số tiền ngẫu nhiên bổ sung để tránh phải gửi một yêu cầu mới cho tất cả thư cùng một lúc.

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á tốc độ tin nhắn trên thiết bị 200 + lỗi:
DeviceMessageRate (Tỷ lệ tin nhắn thiết bị)
Đã vượt quá

Tốc độ 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 tin nhắn đã gửi đến thiết bị này và sử dụng thuật toán thời gian đợi luỹ thừa để thử gửi lại.

Đã vượt quá tỷ lệ tin nhắn theo chủ đề 200 + lỗi:
TopicsMessageRate (Tỷ lệ tin nhắn chủ đề)
Đã vượt quá
Tỷ lệ tin nhắn gửi đến người đăng ký một chủ đề cụ thể quá cao. Giảm số lượng thư đã gửi cho chủ đề này và sử dụng thuật toán 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 xác thực không hợp lệ
Không thể gửi tin nhắn nhắm đến một thiết bị Apple vì các APN bắt buộc khoá xác thực chưa được tải lên hoặc đã hết hạn. Kiểm tra tính hợp lệ của quá trình phát triển và thông tin xác thực sản xuất.

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.

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ả nhãn 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ị đó.