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à Firebase Cloud Messaging (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 tham số và tuỳ chọn có sẵn thuộc các danh mục sau:

Cú pháp thông báo hạ nguồn

Phần này cung cấp cú pháp để gửi thông báo xuống dòng.

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

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

Thông số Cách sử dụng Nội dung mô tả
Mục tiêu
to Không bắt buộc, chuỗi

Tham số này chỉ định người nhận thư.

Giá trị này có thể là mã thông báo đăng ký của 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à /topics/). Để gửi đến nhiều chủ đề, hãy sử dụng tham số condition.

condition Không bắt buộc, chuỗi

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ợ: &&, ||. Hỗ trợ tối đa 2 toán tử cho mỗi tin nhắn 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 Không bắt buộc, chuỗi

Tham số này xác định một nhóm thông báo (ví dụ: có collapse_key: "Updates Available") có thể được thu gọn để chỉ thông báo cuối cùng được gửi khi quá trình phân phối được tiếp tục. Điều này nhằm tránh gửi quá nhiều tin nhắn giống nhau khi thiết bị kết nối lại mạng hoặc thoát khỏi trạng thái 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ể đồng thời lưu trữ 4 thông báo khác nhau cho mỗi ứng dụng khách. Nếu bạn vượt quá số lượng này, thì không thể đảm bảo 4 khoá thu gọn nào mà FCM sẽ giữ lại.

priority Không bắt buộc, chuỗi

Đặ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 mức 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 sẽ được gửi ở mức độ ưu tiên cao và thông báo dữ liệu sẽ được gửi ở mức độ ưu tiên bình thường. Mức độ ưu tiên thông thường tối ưu hoá mức tiêu thụ pin của ứng dụng khách và bạn nên sử dụng mức độ ưu tiên này trừ phi cần phân phối ngay lập tức. Đối với các tin nhắn có mức độ ưu tiên thông thường, ứng dụng có thể nhận được tin nhắn 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 Không bắt buộc, 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 APNs. Khi một thông báo hoặc tin nhắn được gửi và được đặ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 sẽ được gửi qua APN dưới dạng thông báo im lặng chứ không phải thông qua FCM. Xin lưu ý rằng không đảm bảo thông báo không âm thanh trong APN sẽ được phân phối 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 ứng dụng, v.v. Trên Android, theo mặc định, thông báo dữ liệu sẽ đánh thức ứng dụng. Trên Chrome, hiện chưa được hỗ trợ.

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ị mutable-content trong tải trọng APNs. Khi một thông báo được gửi và được đặt thành true, bạn có thể sửa đổi nội dung của thông báo trước khi thông báo đó hiển thị bằng cách sử dụng tiện ích ứng dụng Dịch vụ thông báo. Thông số này sẽ bị bỏ qua đối với Android và web.

time_to_live Không bắt buộc, số

Thông số này chỉ định khoảng thời gian (tính bằng giây) mà thông báo sẽ được lưu trữ trong bộ nhớ FCM nếu thiết bị không có kết nối mạng. 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 phần Đặt thời lượng tồn tại của thông báo.

dry_run Không bắt buộc, 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 cần thực sự gửi thông báo.

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

Trọng tải
data Không bắt buộc, đối tượng

Tham số này chỉ định các cặp khoá-giá trị của 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 phân phối, thì thông báo đó sẽ đại diện cho các trường dữ liệu tuỳ chỉnh. Nếu FCM phân phối, thì thông tin này 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 dẫn đến một ý định bổ sung có tên score với giá trị chuỗi 3x1.

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

Bạn nên sử dụng các giá trị thuộc loại chuỗi. Bạn phải chuyển đổi các giá trị trong đối tượng hoặc các loại dữ liệu không phải chuỗi khác (ví dụ: số nguyên hoặc boolean) thành chuỗi.

notification Không bắt buộc, đối tượng Thông số này chỉ định các cặp khoá-giá trị được xác định trước, hiển thị với 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 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 bạn cung cấp tải trọng thông báo hoặc đặt tuỳ chọn content_available 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 có sẵn để tạo thông báo cho các nền tảng Apple và Android.

Bảng 2a. Apple – khoá cho thông báo

Thông số Cách sử dụng Nội dung 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 Không bắt buộc, chuỗi

Â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 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 Không bắt buộc, chuỗi

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

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.

Tương ứng với category trong tải trọng APN.

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

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

Hãy xem nội dung 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 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 body_loc_key để 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.

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

Hãy xem nội dung 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 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 để sử dụng nhằm bản địa hoá văn bản tiêu đề theo ngôn ngữ 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 nội dung 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 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 title_loc_key để bản địa hoá văn bản tiêu đề theo ngôn ngữ 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 nội dung 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 – khoá cho thông báo tin nhắn

Thông số Cách sử dụng Nội dung 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ã kênh này trong yêu cầu hoặc nếu ứng dụng chưa tạo mã kênh được cung cấp, FCM sẽ sử dụng mã 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 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.

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ợ "default" hoặc tên tệp của 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 Không bắt buộc, chuỗi

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 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 #rrggbb.

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ẽ được khởi chạy khi người dùng nhấp vào 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 để 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.

Hãy xem phần Tài nguyên chuỗi để 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

Giá trị chuỗi biến sẽ được sử dụng thay cho chỉ định định dạng trong body_loc_key để 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.

Hãy xem phần Đị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 để sử dụng nhằm bản địa hoá văn bản tiêu đề theo ngôn ngữ 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 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 title_loc_key để bản địa hoá văn bản tiêu đề theo ngôn ngữ 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) – khoá cho thông báo

Thông số Cách sử dụng Nội dung 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 Không bắt buộc, chuỗi

URL cần sử dụng cho biểu tượng của thông báo.

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.

Tất cả giá trị URL đều phải sử dụng giao thức HTTPS.

Giải thích phản hồi tin nhắn XMPP hạ nguồn

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

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

Thông số Cách sử dụng Nội dung mô tả
from Bắt buộc, chuỗi

Thông số này chỉ định người đã gửi phản hồi này.

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

message_id Bắt buộc, chuỗi Tham số này xác định riêng một thông báo trong kết nối XMPP. Giá trị này là một chuỗi xác định riêng thông báo được liên kết.
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 để lấy thông tin lỗi.

error Không bắt buộc, chuỗi Tham số này chỉ định một lỗi liên quan đến thông báo hạ nguồn. Giá trị này được đặt khi message_typenack. Hãy xem bảng 4 để biết thông tin chi tiết.
error_description Không bắt buộc, chuỗi 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 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 truyền xuống.

Bảng 4 Mã phản hồi lỗi thông báo hạ nguồn.

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 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 ở định dạng JSON).
Đăng ký APN không hợp lệ INVALID_JSON Đối với các lượt đăng ký iOS, hãy kiểm tra để đảm bảo rằng yêu cầu đăng ký từ ứng dụng khách 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 truyền đến máy chủ. Đả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 FCM. Không cắt bớt hoặc thêm ký tự.
Thiết bị chưa đăng ký DEVICE_UNREGISTERED 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:
  • Nếu ứng dụng khách huỷ đăng ký với 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 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 không đượ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ày, hãy xoá mã thông báo đăng ký này khỏi máy chủ ứng dụng và ngừng sử dụng mã thông báo này để gửi thông báo.
Người gửi không khớp SENDER_ID_MISMATCH Mã đăng ký được liên kết với một nhóm người gửi nhất định. Khi đăng ký FCM, ứ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 những mã nhận dạng người gửi đó khi gửi thông báo đến ứng dụng khách. Nếu bạn chuyển sang một trình 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 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).
Tin nhắn quá lớn INVALID_JSON 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ủ đề. 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 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ệ INVALID_JSON 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).
Thông báo ACK không hợp lệ BAD_ACK Kiểm tra để đảm bảo rằng thông báo ack được định dạng đúng cách trước khi thử lại. Hãy 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. Thử gửi lại yêu cầu đó, 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. (ví dụ: nếu bạn đợi một giây trước khi thử lại lần đầu, hãy đợi ít nhất hai giây trước lần thử tiếp theo, sau đó là bốn giây, v.v.). Nếu bạn gửi nhiều tin nhắn, hãy trì hoãn từng tin nhắn một cách độc lập thêm một khoảng thời gian ngẫu nhiên để tránh gửi yêu cầu mới cho tất cả tin nhắn cùng một lúc.
  • Bạn nên đặt độ trễ thử lại ban đầu thành một giây.

Lưu ý: Những người gửi gây ra vấn đề 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 cùng một yêu cầu theo các yêu cầu được liệt kê trong phần "Hết thời gian chờ" (xem hàng trên).
Vượt quá giới hạn tần suất gửi tin nhắn của thiết bị DEVICE_MESSAGE_RATE
_EXCEEDED
Tỷ lệ tin nhắn gửi đến một thiết bị cụ thể quá cao. Giảm số lượng tin nhắn gửi đến thiết bị này và không thử gửi lại ngay cho thiết bị này.
Đã vượt quá tốc độ gửi tin nhắn về chủ đề TOPICS_MESSAGE_RATE
_EXCEEDED
Tỷ lệ thư 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à không thử gửi lại ngay lập tức.
Hết pin do kết nối CONNECTION_DRAINING Không thể xử lý thông báo vì kết nối đang bị hao tổn. Điều này xảy ra vì định kỳ, FCM cần đóng một kết nối để thực hiện cân bằng tải. Thử lại thông báo qua một kết nối XMPP khác.
Thông tin xác thực APN không hợp lệ INVALID_APNS_CREDENTIAL Không thể gửi 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 công khai.
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ỉ đẩy web hay không.

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

Tin nhắn ngược dòng là tin nhắn mà ứng dụng khách gửi đến máy chủ ứng dụng. Hiện tại, chỉ XMPP mới hỗ trợ tính năng nhắn tin ngược dòng. Hãy xem tài liệu dành cho 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ừ ứng dụng khách.

Diễn giải tin nhắn XMPP ngược

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

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

Thông số Cách sử dụng Nội dung mô tả
from Bắt buộc, chuỗi

Tham số này chỉ định người đã gửi thông báo.

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

category Bắt buộc, chuỗi Thông 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 Không bắt buộc, chuỗi Tham số này chỉ định các cặp khoá-giá trị của tải trọng của thông báo.

Gửi thông báo xác nhận (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 đến FCM để phản hồi 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 tin nhắn XMPP ngược dòng.

Thông số Cách sử dụng Nội dung mô tả
to Bắt buộc, chuỗi

Tham số này chỉ định người nhận thông báo phản hồi.

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

message_id Bắt buộc, chuỗi Thông số này chỉ định thông báo mà phản hồi dành cho. Giá trị này phải là giá trị message_id từ thông báo ngược 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áy chủ ứng dụng đến CCS. Đối với 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 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 đến máy chủ ứng dụng:

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

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

Bảng 7 Tin nhắn điều khiển FCM (XMPP).

Thông số Cách sử dụng Nội dung mô tả
Trường phổ biến
message_type Bắt buộc, chuỗi

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

Khi được đặt 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 Không bắt buộc, chuỗi

Tham số này chỉ định loại thông báo điều khiển đượ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 điều khiển này trước khi đóng một kết nối để thực hiện cân bằng tải. Khi kết nối hết, bạn không được phép gửi thêm thông báo nào đến 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ý.