Với FCM, bạn có thể gửi hai loại thông báo đến ứng dụng khách:
- Thông báo, tương tự như "thông báo hiển thị", được SDK FCM tự động xử lý. (Trên Android có
AndroidConfigV2, hãy sử dụngRemoteNotificationcho tất cả thông báo hiển thị thông báo mà người dùng nhìn thấy để các thông báo đó được gửi mà không bị trì hoãn ngoài ý muốn; thông báo sẽ tự động hiển thị cho dù ứng dụng đang ở nền trước hay nền sau, trừ phi bị tắt tiếng rõ ràng trong mã ứng dụng.) - Thông báo dữ liệu, do ứng dụng khách xử lý.
Thông báo chứa một tập hợp khoá được xác định trước mà người dùng có thể nhìn thấy và có thể chứa tải trọng dữ liệu không bắt buộc. Ngược lại, thông báo dữ liệu chỉ chứa các cặp khoá-giá trị tuỳ chỉnh do người dùng xác định. Trọng tải tối đa cho cả hai loại thông báo là 4096 byte, ngoại trừ khi gửi thông báo từ bảng điều khiển Firebase, trong đó áp dụng giới hạn ký tự 1000.
| Sử dụng tình huống | Cách gửi | |
|---|---|---|
| Tin nhắn thông báo | FCM SDK hiển thị thông báo cho thiết bị của người dùng cuối thay cho ứng dụng khách khi ứng dụng đó đang chạy ở chế độ nền. Nếu không, nếu ứng dụng đang chạy ở nền trước khi nhận được thông báo, thì mã của ứng dụng sẽ xác định hành vi. |
|
| Thông báo dữ liệu | Ứng dụng khách chịu trách nhiệm xử lý thông báo dữ liệu. Thông báo dữ liệu chỉ có các cặp khoá-giá trị tuỳ chỉnh mà không có tên khoá dành riêng (xem bên dưới). | Trong một môi trường đáng tin cậy, chẳng hạn như
Cloud Functions
hoặc máy chủ ứng dụng, hãy sử dụng
Firebase Admin SDK hoặc
HTTP v1 API.
Trong yêu cầu gửi, hãy đặt khoá data.
|
Bạn có thể sử dụng thông báo khi muốn SDK FCM tự động xử lý việc hiển thị thông báo khi ứng dụng của bạn đang chạy ở chế độ nền. FCM có thể gửi thông báo kèm theo tải trọng dữ liệu không bắt buộc. Trong những trường hợp như vậy, FCM sẽ hiển thị tải trọng thông báo và ứng dụng khách sẽ xử lý tải trọng dữ liệu.
Bạn có thể sử dụng thông báo dữ liệu khi muốn xử lý thông báo bằng mã ứng dụng khách của riêng mình.
Tin nhắn thông báo
Bạn có thể gửi thông báo bằng bảng điều khiển Firebase, Firebase Admin SDK hoặc API FCM HTTP v1. Bảng điều khiển Firebase cung cấp tính năng thử nghiệm A/B dựa trên số liệu phân tích để giúp bạn tinh chỉnh và cải thiện thông báo.
Để gửi thông báo bằng API HTTP phiên bản 1 Firebase Admin SDK hoặc FCM, hãy đặt khoá notification bằng tập hợp các tuỳ chọn khoá-giá trị được xác định trước của thông báo. Bạn có thể sử dụng ví dụ sau để định dạng
thông báo trong ứng dụng nhắn tin nhanh
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
Thông báo được gửi đến khay thông báo khi ứng dụng chạy ở chế độ nền. Đối với các ứng dụng chạy trên nền trước, thông báo sẽ được xử lý bằng một hàm callback.
Bạn có thể sử dụng tài liệu tham khảo về đối tượng thông báo API HTTP v1 của FCM để xem danh sách đầy đủ các khoá được xác định trước có sẵn để tạo thông báo.
Thông báo dữ liệu
Bạn có thể tuỳ ý sử dụng tải trọng FCM data để triển khai lược đồ mã hoá mà bạn chọn. Đảm bảo rằng bạn không sử dụng bất kỳ từ dành riêng nào trong
các cặp khoá-giá trị tuỳ chỉnh. Từ dành riêng bao gồm from, message_type hoặc bất kỳ từ nào bắt đầu bằng google., gcm. hoặc gcm.notification..
Ví dụ sau đây cho thấy cách sử dụng trường dữ liệu cấp cao nhất hoặc trường dữ liệu chung, được diễn giải bởi các ứng dụng trên tất cả nền tảng nhận được thông báo. Trên mỗi nền tảng, ứng dụng khách nhận được tải trọng dữ liệu trong một hàm callback
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
Thông báo có tải trọng dữ liệu không bắt buộc
Bạn có thể gửi thông báo chứa tải trọng không bắt buộc của các cặp khoá-giá trị tuỳ chỉnh theo phương thức lập trình hoặc bằng bảng điều khiển Firebase. Trong Trình soạn thông báo, hãy sử dụng các trường Dữ liệu tuỳ chỉnh trong Tuỳ chọn nâng cao.
Hành vi của ứng dụng khi nhận được thông báo bao gồm cả tải trọng thông báo và tải trọng dữ liệu phụ thuộc vào việc ứng dụng đang chạy ở chế độ nền hay chế độ nền trước, về cơ bản là ứng dụng có đang hoạt động tại thời điểm nhận hay không.
- Khi ở chế độ nền, ứng dụng sẽ nhận được tải trọng thông báo trong khay thông báo và chỉ xử lý tải trọng dữ liệu khi người dùng nhấn vào thông báo.
- Khi ở nền trước, ứng dụng của bạn sẽ nhận được một đối tượng thông báo có cả hai tải trọng.
Dưới đây là thông báo có định dạng JSON chứa cả khoá notification và khoá data:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}