Giao thức XMPP 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 XMPP dùng để truyền thông báo giữa máy chủ ứng dụng, ứng dụng khách và Giải pháp gửi thông báo qua đám mây của Firebase (FCM). Máy chủ ứng dụng của bạn phải kết nối với các điểm cuối sau:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

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 truyền xuống.

Thông báo XMPP 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 các thông báo JSON XMPP.

Bảng 1 Mục tiêu, tuỳ chọn và tải trọng cho các thông báo XMPP hạ nguồn (JSON).

Thông số Hoạt động 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ị 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ủ đề (có tiền tố là /topics/). Để gửi đến nhiều chủ đề, hãy sử dụng tham số condition.

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à ""yourChủ đề" 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ợ: &&, ||. Hỗ trợ tối đa 2 toán tử cho mỗi thông báo chủ đề.

Lựa chọn
message_id Bắt buộc, chuỗi

Tham số này xác định duy nhất một thông báo trong kết nối XMPP.

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ụ: với collapse_key: "Updates Available") có thể thu gọn được để chỉ gửi thông báo cuối cùng khi tiếp tục phân phối. Thao tác này nhằm tránh gửi quá nhiều thông báo giống nhau khi thiết bị kết nối mạng trở lại hoặc hết chế độ nghỉ.

Chúng tôi không đảm bảo về 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 thông báo khác nhau cho mỗi ứng dụng khách. Nếu bạn vượt quá con số này, thì không thể đảm bảo rằng 4 khoá thu gọn mà FCM sẽ giữ lại.

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, những giá trị 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 còn thông báo 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 của ứng dụng khách và nên được dùng 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 với độ trễ không xác định.

Khi một tin nhắn được gửi với mức độ ưu tiên cao, tin nhắn đó 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 thành true, một ứ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 phải FCM. Xin lưu ý rằng chúng tôi không đảm bảo gửi thông báo im lặng trong APN và có thể phụ thuộc vào các yếu tố như người dùng bật Chế độ tiết kiệm pin, buộc thoát khỏi ứ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. Tính năng này hiện chưa được hỗ trợ trên Chrome.

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à giá trị này được đặt thành true, người dùng có thể sửa đổi nội dung của thông báo trước khi hiển thị bằng tiện ích ứng dụng Notification Service (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) thông báo sẽ được lưu giữ trong bộ nhớ FCM nếu thiết bị không có kết nối mạng. 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.

dry_run Giá trị boolean

Khi được đặt thành true, tham số này cho phép nhà phát triển kiểm thử một yêu cầu mà không thực sự gửi thông báo.

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

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ị 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 do APN gửi, thì thông báo đó sẽ đại diện cho các trường dữ liệu tuỳ chỉnh. Nếu do FCM phân phối, thì giá trị này sẽ được biểu thị dưới dạng từ điển khoá-giá trị trong AppDelegate application:didReceiveRemoteNotification:.

Trên Android, việc này sẽ dẫn đến một ý định bổ sung có tên score kèm theo 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"). Đừ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 các giá trị trong đố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ị mà người dùng nhìn thấy được xác định trước trong 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à dữ liệu, hãy xem bài viết Loại thông báo. Nếu tải trọng thông báo được cung cấp hoặc tuỳ chọn content_available được đặt thành true cho một thông báo gửi đến thiết bị Apple, thì thông báo sẽ được gửi qua APN, nếu không thì thông báo 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 khoá được xác định trước hiện có để tạo thông báo thông báo cho các nền tảng của Apple và Android.

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

Thông số Hoạt động 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 hoặc trong thư mục Library/Sounds của vùng chứa dữ liệu của ứng dụng. Hãy 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.

Hãy xem phần Tài liệu tham khảo về khoá tải trọng 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 Mảng JSON không bắt buộc dưới dạng chuỗi

Các giá trị chuỗi biến được dùng thay cho thông số định dạng trong body_loc_key nhằm bản địa hoá văn bản nội dung theo 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.

Hãy xem phần Tài liệu tham khảo về khoá tải trọng 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 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 được 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.

Hãy xem phần Tài liệu tham khảo về khoá tải trọng 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 Mảng JSON không bắt buộc dưới dạng chuỗi

Các giá trị chuỗi biến được dùng thay cho thông số định dạng trong title_loc_key nhằm bản địa hoá văn bản tiêu đề theo 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.

Hãy xem phần Tài liệu tham khảo về khoá tải trọng Bản địa hoá nội dung của thông báo từ xa để biết thêm thông tin.

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

Thông số Hoạt động 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 có 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 thì mới 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 ứng dụng chưa tạo mã nhận dạng kênh được cung cấp, 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 myicon cho tài nguyên có thể vẽ myicon. Nếu bạn không gửi khoá này trong yêu cầu, FCM sẽ 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 đi kèm 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 dùng để thay thế thông báo hiện có trong ngăn thông báo.

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

Hãy xem phần 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 được dùng thay cho thông số định dạng trong body_loc_key nhằm bản địa hoá văn bản nội dung theo bản địa hoá hiện tại của người dùng.

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 được 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 được dùng thay cho thông số định dạng trong title_loc_key nhằm bản địa hoá văn bản tiêu đề theo bản địa hoá hiện tại của người dùng.

Hãy xem phần Đị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ố Hoạt động 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.

Diễn giải nội dung phản hồi tin nhắn XMPP xuôi dòng

Bảng sau đây liệt kê các trường xuất hiện trong phản hồi tin nhắn XMPP xuôi dòng.

Bảng 3 Nội dung phản hồi XMPP của thông báo xuôi dòng.

Thông số Hoạt động sử dụng Mô tả
from Bắt buộc, chuỗi

Tham số này chỉ định người đã gửi câu trả lời này.

Giá trị là mã thông báo đăng ký của ứng dụng.

message_id Bắt buộc, chuỗi Tham số này xác định duy nhất một thông báo trong kết nối XMPP. Giá trị là một chuỗi xác định duy nhất thông báo liên quan.
message_type Bắt buộc, chuỗi

Tham số này chỉ định một thông báo ack hoặc nack từ FCM đến máy chủ ứng dụng.

Nếu bạn đặt giá trị thành nack, máy chủ ứng dụng sẽ xem xét errorerror_description để nhận thông tin về lỗi.

error Chuỗi không bắt buộc Tham số này chỉ định một lỗi liên quan đến thông báo xuôi dòng. Thuộc tính này được đặt khi message_typenack. Xem bảng 4 để biết chi tiết.
error_description Chuỗi không bắt buộc Tham số này cung cấp thông tin mô tả về lỗi. Giá trị này được đặt khi message_typenack.

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 4 Mã phản hồi lỗi của thông báo về hệ thống truyền xuống.

Lỗi Mã XMPP Hành động được đề xuất
Thiếu mã thông báo đăng ký INVALID_JSON 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 trường to hoặc registration_ids trong JSON).
Thông tin đăng ký APN không hợp lệ INVALID_JSON Đối với hoạt động đăng ký iOS, hãy kiểm tra để đảm bảo yêu cầu đăng ký từ ứng dụng chứa mã thông báo APN và mã ứng dụng hợp lệ.
Mã thông báo đăng ký không hợp lệ BAD_REGISTRATION Kiểm tra định dạng của mã thông báo đăng ký mà bạn chuyể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 từ quá trình đăng ký bằng FCM. Đừng cắt bớt hoặc thêm thêm ký tự.
Thiết bị chưa được đăng ký DEVICE_UNREGISTERED 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, trong đó có:
  • 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ý, thì đ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 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ã thông báo đăng ký hoặc mã thông báo APN đã hết hạn đối với thiết bị).
  • 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 như vậy, hãy xoá mã thông báo đăng ký này khỏi máy chủ ứng dụng rồi ngừng sử dụng mã đó để gửi thông báo.
Người gửi không khớp SENDER_ID_MISMATCH 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 ký FCM, một ứng dụng khách phải chỉ định những người gửi được phép gửi thông báo. 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 bạn 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ệ INVALID_JSON 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).
Tin nhắn quá lớn INVALID_JSON 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 thông báo không vượt quá giới hạn của FCM: 4096 byte đối với hầu hết các thông báo hoặc 2048 byte đối với trường hợp gửi thông điệp đến chủ đề. Dữ liệu này bao gồm cả khoá và giá trị.
Khoá dữ liệu không hợp lệ INVALID_JSON 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, gcm hoặc bất kỳ giá trị nào 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 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ệ INVALID_JSON Kiểm tra để đảm bảo giá trị 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 từ 0 đến 2.419.200 (4 tuần).
Thông báo ACK không hợp lệ BAD_ACK Hãy kiểm tra để đảm bảo thông báo ack được định dạng đúng cách trước khi thử lại. Xem bảng 6 để biết thông tin chi tiết.
Hết giờ SERVICE_UNAVAILABLE

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:

  • 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 đã đợi 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ử lại tiếp theo, sau đó là bốn giây, v.v.). 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 bằng một số tiền ngẫu nhiên bổ sung để tránh đưa ra một yêu cầu mới cho tất cả thư cùng một lúc.
  • Bạn phải đặt thời gian trễ thử lại ban đầu thành 1 giây.

Lưu ý: 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ộ INTERNAL_SERVER_
ERROR
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 ở trên).
Đã vượt quá tốc độ tin nhắn trên thiết bị DEVICE_MESSAGE_RATE
_EXCEEDED
Tốc độ tin nhắn gửi đến một thiết bị cụ thể quá cao. Hãy giảm số lượng tin nhắn được gửi tới thiết bị này và không gửi lại ngay đến thiết bị này.
Đã vượt quá tỷ lệ tin nhắn theo chủ đề TOPICS_MESSAGE_RATE
_EXCEEDED
Tỷ lệ tin nhắn gửi đến người đăng ký 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à không gửi lại ngay.
Loại bỏ kết nối CONNECTION_DRAINING Không thể xử lý thư vì kết nối đang cạn. Điều này xảy ra vì theo định kỳ, FCM cần đóng kết nối để thực hiện cân bằng tải. Thử gửi lại tin nhắn qua một kết nối XMPP khác.
Thông tin đăng nhập APN không hợp lệ INVALID_APNS_CREDENTIAL Không thể gửi một thông báo nhắm đến thiết bị iOS 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 chính thức.
Không xác thực được AUTHENTICATION_FAILED Không xác thực được bằng các dịch vụ đẩy bên ngoài. Kiểm tra xem bạn có đang sử dụng đúng chứng chỉ về thông báo đẩy web hay không.

Cú pháp thông báo ngược dòng

Thông báo ngược dòng (upstream) là thông báo mà ứng dụng khách gửi đến máy chủ ứng dụng. Hiện tại, chỉ XMPP hỗ trợ chức năng nhắn tin ngược dòng. Hãy xem tài liệu về nền tảng của bạn để biết thêm thông tin về cách gửi thông báo từ các ứng dụng.

Diễn giải thông báo XMPP ngược dòng

Bảng sau đây mô tả các trường trong khổ XMPP do FCM tạo để phản hồi các yêu cầu tin nhắn ngược dòng từ ứng dụng khách.

Bảng 5 Các thông báo XMPP ngược dòng.

Thông số Hoạt động sử dụng Mô tả
from Bắt buộc, chuỗi

Tham số này chỉ định người đã gửi tin nhắn.

Giá trị là mã thông báo đăng ký của ứng dụng.

category Bắt buộc, chuỗi Tham số này chỉ định tên gói ứng dụng của ứng dụng khách đã gửi thông báo.
message_id Bắt buộc, chuỗi Tham số này chỉ định mã nhận dạng duy nhất của thông báo.
data 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.

Đang gửi thông báo ACK

Bảng sau đây mô tả phản hồi ACK mà máy chủ ứng dụng dự kiến sẽ gửi tới FCM để phản hồi một thông báo ngược dòng mà máy chủ ứng dụng đã nhận được.

Bảng 6 Phản hồi thông báo XMPP ngược dòng.

Thông số Hoạt động sử dụng Mô tả
to Bắt buộc, chuỗi

Tham số này chỉ định người nhận tin nhắn phản hồi.

Giá trị này phải là mã thông báo đăng ký của ứng dụng đã gửi thông báo ngược dòng.

message_id Bắt buộc, chuỗi Tham số này chỉ định xem tin nhắn trả lời sẽ dành cho thông báo nào. Giá trị này phải là giá trị message_id từ thông báo ngược dòng tương ứng.
message_type Bắt buộc, chuỗi Tham số này chỉ định một thông báo ack từ một máy chủ ứng dụng đến CCS. Đối với các thông báo ngược dòng, bạn phải luôn đặt giá trị này thành ack.

Thông báo trên máy chủ FCM (XMPP)

Đây là thông báo được gửi từ FCM đến máy chủ ứng dụng. Dưới đây là các loại thông báo chính mà FCM gửi tới máy chủ ứng dụng:

  • Kiểm soát: Những thông báo do CCS tạo ra cho biết rằng bạn phải thực hiện hành động từ máy chủ ứng dụng.

Bảng sau đây mô tả các trường có trong các thông báo mà CCS gửi đến máy chủ ứng dụng.

Bảng 7 Thông báo kiểm soát FCM (XMPP).

Thông số Hoạt động sử dụng Mô tả
Trường chung
message_type Bắt buộc, chuỗi

Tham số này chỉ định loại thông báo: control.

Khi bạn đặt chính sách này thành control, thông báo sẽ bao gồm control_type để cho biết loại thông báo điều khiển.

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

Tham số này chỉ định loại thông báo kiểm soát được gửi từ FCM.

Hiện tại, chúng tôi chỉ hỗ trợ CONNECTION_DRAINING. FCM gửi thông báo kiểm soát này trước khi đóng kết nối để thực hiện cân bằng tải. Khi kết nối cạn kiệt, không có thêm tin nhắn nào được phép gửi tới kết nối, nhưng các thông báo hiện có trong quy trình sẽ tiếp tục được xử lý.