Đặt và quản lý mức độ ưu tiên của tin nhắn

Bạn có hai lựa chọn để chỉ định mức độ ưu tiên phân phối cho thông báo hạ nguồn trên Android: mức độ ưu tiên thông thường và cao. Việc phân phối thông báo có mức độ ưu tiên bình thường và cao 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 tin nhắn dữ liệu. Thông báo có mức độ ưu tiên thông thường được phân phối ngay lập tức khi thiết bị không ở trạng thái ngủ. Khi thiết bị ở chế độ Nghỉ, quá trình phân phối có thể bị trễ để tiết kiệm pin cho đến khi thiết bị thoát khỏi chế độ nghỉ. Đối với các thông báo ít quan trọng về thời gian hơn, chẳng hạn như thông báo về email mới, duy trì đồ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 gửi thông thường.

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

  • Mức độ ưu tiên cao. FCM cố gắng phân phối thông báo có mức độ ưu tiên cao ngay lập tức, cho phép FCM đánh thức thiết bị đang ngủ khi cần thiết và chạy một số hoạt động xử lý có giới hạn (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ẽ khiến người dùng tương tác với ứng dụng hoặc thông báo của ứng dụng.

Xử lý và giảm mức độ ưu tiên của 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ó tính thời gian, nội dung hiển thị với người dùng và phải dẫn đến thông báo hiển thị với người dùng. Nếu FCM phát hiện một mẫu trong đó thông báo không dẫn đến thông báo hiển thị cho người dùng, thì thông báo của bạn có thể bị giảm mức độ ưu tiên xuống mức độ ưu tiên thông thường hoặc uỷ quyền để Dịch vụ Google Play xử lý.

FCM sử dụng 7 ngày hành vi của thông báo khi xác định xem có giảm mức độ ưu tiên hoặc chuyển tiếp thông báo hay không; lớp này xác định việc này một cách độc lập cho mọi thực thể 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 mà người dùng có thể 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 bằng Dịch vụ Google Play

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 sẽ được Dịch vụ Google Play làm proxy thay vì bị giảm mức độ ưu tiên. Điều này có nghĩa là thông báo được Dịch vụ Google Play hiển thị thay mặt cho ứng dụng mà không cần khởi động ứng dụng. Việc này được thực hiện để mang lại trải nghiệm tổng thể tốt hơn cho người dùng trên thiết bị Android.

Xin lưu ý rằng thông báo được proxy sẽ làm thay đổi cách báo cáo số liệu phân tích liên quan đến thông báo đang được nhận:

  • Để báo cáo số liệu phân tích cho thông báo được 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 sự chậm trễ hoặc giảm số lượng thông báo nhận được so với số lượng trước khi triển khai thông báo được proxy. Điều này là do số liệu phân tích cho thông báo được proxy chỉ được báo cáo sau khi ứng dụng của bạn khởi động và có thể hoàn toàn không được báo cáo nếu thông báo không khiến ứng dụng mở ra.

Việc ủy quyền thông báo theo cách này là hành vi mặc định cho các ứng dụng sử dụng Android Q trở lên và Dịch vụ Google Play phiên bản 19054000 trở lên. Các thông báo được gửi thông qua API HTTP v1 sẽ được chuyển tiếp, nhưng các thông báo được gửi thông qua bảng điều khiển Firebase hoặc API cũ sẽ không được chuyển tiếp. Xin lưu ý rằng tính năng này hiện đang trong 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ì những 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 tính năng này theo bất kỳ cách nào sau đây:

  • Trên cơ sở 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ở thực thể ứng dụng: Đối với thực thể ứ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ể.
  • Trên cơ sở mỗi thông báo: Đặt khoá proxy thành DENY trong đối tượng AndroidNotification cho yêu cầu gửi.

Đo lường việc giảm mức độ ưu tiên của 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ư 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 đã phân phối của thư đó, từ getPriority(), với mức độ ưu tiên ban đầu của thư đó, từ getOriginalPriority().

  • Tất cả tin nhắn. FCM Aggregate Delivery Data API (API Dữ liệu phân phối tổng hợp) có thể báo cáo tỷ lệ phần trăm tất cả thông báo của bạn đến Android đang bị giảm mức độ ưu tiên. Một số tin nhắn có thể bị bỏ qua khỏi báo cáo dữ liệu tổng hợp, nhưng nhìn chung, các báo cáo này sẽ cung cấp thông tin tổng quan về tỷ lệ giảm mức độ ưu tiên của tin nhắn. 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á API này trong trình khám phá API.

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

Khắc phục sự cố

  • Đảm bảo rằng thực thể ứng dụng của bạn đã bật thông báo. Nếu người dùng đã tắt quyền thông báo cho ứng dụng của bạn, thì 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ông báo có mức độ ưu tiên cao đến một thực thể ứng dụng.

  • Khô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 mạng có độ trễ cao, nên hãy tránh mở kết nối với máy chủ của bạn 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ý được 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 thông báo FCM và hiển thị ngay. Nếu cần đồng bộ hoá để thêm nội dung trong ứng dụng trên Android, bạn có thể lên lịch một tác vụ bằng WorkManager để xử lý tác vụ đó ở chế độ nền.