Đặt và quản lý mức độ ưu tiên của thông báo

Bạn có hai lựa chọn để chỉ định mức độ ưu tiên phân phối cho các thông báo tiếp theo trên Android: mức độ ưu tiên bình thường và mức độ ưu tiên cao. Việc gửi các thông báo thông thường và có mức độ ưu tiên cao sẽ hoạt động như sau:

  • Mức độ ưu tiên bình thường. Đây là mức độ ưu tiên mặc định cho thông báo dữ liệu. Thông báo có mức độ ưu tiên thông thường sẽ được gửi ngay lập tức khi thiết bị không ở chế độ ngủ. Khi thiết bị ở chế độ Nghỉ, quá trình phân phối có thể bị trì hoãn để tiết kiệm pin cho đến khi thiết bị thoát khỏi chế độ nghỉ. Đối với các thư ít tốn thời gian hơn, chẳng hạn như thông báo về email mới, đồng bộ hoá giao diện người dùng hoặc đồng bộ hoá dữ liệu ứng dụng ở chế độ nền, hãy chọn mức độ ưu tiên phân phối bình thường.

    Khi nhận được một thông báo có mức độ ưu tiên bình thường trên Android yêu cầu đồng bộ hoá dữ liệu nền cho ứng dụng, bạn có thể lên lịch cho một tác vụ bằng WorkManager để xử lý khi có mạng.

  • Mức độ ưu tiên cao. FCM cố gắng gửi ngay các thông báo có mức độ ưu tiên cao, cho phép FCM đánh thức thiết bị đang ngủ khi cần thiết và thực hiện một số hoạt động xử lý hạn chế (bao gồm cả quyền truy cập mạng rất hạn chế). Thông báo có mức độ ưu tiên cao thường sẽ dẫn đến sự tương tác của người dùng với ứng dụng hoặc thông báo của ứng dụng đó.

Xử lý và huỷ ưu tiên tin nhắn trên Android

Thông báo có mức độ ưu tiên cao trên Android dành cho nội dung có giới hạn thời gian, nội dung mà người dùng nhìn thấy và sẽ dẫn đến thông báo trực tiếp cho người dùng. Nếu FCM phát hiện một mẫu mà thông báo không dẫn đến thông báo dành cho người dùng, thì thông báo của bạn có thể bị giảm mức độ ưu tiên ở mức độ ưu tiên bình thường hoặc được uỷ quyền để Dịch vụ Google Play xử lý.

FCM sử dụng hành vi của thông báo trong 7 ngày khi xác định xem có cần giảm mức độ ưu tiên hay dùng thông báo proxy hay không; FCM thực hiện việc xác định này một cách độc lập cho mọi phiên bản của ứng dụng. Nếu, để phản hồi các thông báo có mức độ ưu tiên cao, thông báo được hiển thị theo cách người dùng nhìn thấy, thì các thông báo có mức độ ưu tiên cao trong tương lai sẽ không bị ảnh hưởng.

Uỷ quyền thông báo qua Dịch vụ Google Play

Thay vì giảm mức độ ưu tiên, Dịch vụ Google Play sẽ xử lý các thông báo có mức độ ưu tiên cao (không phải thông báo dữ liệu) đáp ứng một số tiêu chí nhất định. Điều này có nghĩa là dịch vụ Google Play hiển thị thông báo thay cho ứng dụng mà không cần khởi động ứng dụng. Việc này nhằm mang lại trải nghiệm tổng thể tốt hơn cho người dùng trên các thiết bị Android.

Xin lưu ý rằng nội dung thông báo được xử lý qua máy chủ proxy sẽ tạo ra những thay đổi về cách báo cáo số liệu phân tích liên quan đến thông báo nhận được:

  • Để báo cáo số liệu phân tích cho các thông báo qua proxy, ứng dụng của bạn phải sử dụng SDK FCM phiên bản 24.0.0 trở lên.
  • Bạn có thể nhận thấy độ trễ hoặc giảm số lượng thông báo nhận được so với số lượng trước khi ra mắt thông báo proxy. Lý do là số liệu phân tích cho thông báo qua proxy chỉ được báo cáo khi ứng dụng của bạn khởi động và có thể không được báo cáo nếu thông báo không dẫn đến việc ứng dụng mở ra.

Ủy quyền tin nhắn thông báo theo cách này là chế độ mặc định cho các ứng dụng dùng Android Q+ và Dịch vụ Google Play phiên bản 19054000 trở lên. Các thông báo gửi qua API HTTP phiên bản 1 sẽ được xử lý qua máy chủ proxy, nhưng các thông báo gửi qua bảng điều khiển của Firebase hoặc các API cũ sẽ không được xử lý qua máy chủ proxy. Xin lưu ý rằng tính năng này hiện đang ở giai đoạn thử nghiệm và có thể thay đổi.

Mặc dù bạn nên bật tính năng uỷ quyền vì các lợi ích của tính năng này đối với pin và bộ nhớ của thiết bị, nhưng bạn có thể chọn không sử dụng hành vi này theo bất kỳ cách nào sau đây:

  • Ở cấp ứng dụng: trong tệp kê khai ứng dụng, hãy thêm lệnh <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>.
  • Trên cơ sở phiên bản ứng dụng: Đối với phiên bản ứng dụng, hãy đặt fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> trong luồng giao diện người dùng cho ứng dụng, tuỳ thuộc vào trường hợp sử dụng cụ thể.
  • Đối với từng tin nhắn: Hãy đặt khoá proxy thành DENY trong đối tượng AndroidNotification cho yêu cầu gửi.

Đo lường việc huỷ ưu tiên tin nhắn trên Android

  • Tin nhắn riêng lẻ. Khi phân phối, bạn có thể xác định xem một thông báo riêng lẻ có bị giảm mức độ ưu tiên hay không bằng cách so sánh mức độ ưu tiên được phân phối của thông báo đó (từ getPriority() với mức ưu tiên ban đầu) từ getOriginalPriority().

  • Tất cả thông báo. API Dữ liệu phân phối tổng hợp FCM có thể báo cáo tỷ lệ phần trăm thông báo bị giảm mức độ ưu tiên trong tổng số thông báo của bạn gửi cho Android. Một số thông báo có thể bị loại bỏ khỏi báo cáo dữ liệu tổng hợp, nhưng về tổng thể, các thông báo đó sẽ cung cấp thông tin chung về tỷ lệ huỷ ưu tiên thông báo. Hãy xem bài viết của chúng tôi về dữ liệu phân phối tổng hợp để biết thêm thông tin và mã mẫu để truy vấn API. Bạn cũng có thể khám phá dữ liệu này trong trình khám phá API.

  • Thông báo qua proxy. Thông báo được xử lý qua máy chủ proxy sẽ không được tính trong các chỉ số phân phối hiện tại trên FCM hoặc GA. Vì vậy, chỉ số gửi thông báo có thể giảm tới 15%. Để báo cáo về các thông báo được xử lý qua máy chủ proxy, hãy sử dụng API Dữ liệu phân phối tổng hợp FCM. ProxyNotificationInsightPercents báo cáo tỷ lệ phần trăm thông báo đã được xử lý thành công, cũng như thông tin chi tiết về các thông báo không thể xử lý proxy thành công.

Khắc phục sự cố

  • Đảm bảo rằng phiên bản ứng dụng của bạn đã bật thông báo. Nếu người dùng đã tắt quyền gửi thông báo đối với ứng dụng của bạn, thì sẽ không có thông báo nào được đăng. Do đó, thông báo của bạn sẽ bị giảm mức độ ưu tiên. Bạn nên xác minh rằng thông báo đã được bật trước khi gửi thư có mức độ ưu tiên cao đến một phiên bản của ứng dụng.

  • Đừng gọi về nhà trước khi đăng thông báo. Vì một phần nhỏ người dùng thiết bị di động Android sử dụng các mạng có độ trễ cao, nên hãy tránh mở kết nối với máy chủ trước khi hiển thị thông báo. Việc gọi lại máy chủ trước khi kết thúc thời gian xử lý cho phép có thể gây rủi ro cho người dùng trên các mạng có độ trễ cao. Thay vào đó, hãy đưa nội dung thông báo vào tin nhắn FCM và hiển thị nội dung đó ngay lập tức. Nếu cần đồng bộ hoá cho nội dung bổ sung trong ứng dụng trên Android, bạn có thể lên lịch cho một tác vụ bằng WorkManager để xử lý nội dung đó ở chế độ nền.