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

Bạn có hai cách để 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 cao và bình thường. Gửi thư có mức độ ưu tiên cao và thông thườ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ể 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 trong nền, chọn mức độ ưu tiên phân phối bình thường.

    Khi nhận đượ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 việc cần làm bằng WorkManager để xử lý khi có mạng.

  • Mức độ ưu tiên cao. FCM cố gắng cung cấp mức độ ưu tiên cao tin nhắn tức thì, cho phép FCM đánh thức một thiết bị đang ngủ khi cần thiết và chạy một số quá trình xử lý hạn chế (bao gồm cả mạng rất hạn chế truy cập). 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 của bạn 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 có giới hạn về thời gian, cũng như để người dùng thấy được và sẽ dẫn đến thông báo dành cho người dùng. Nếu FCM phát hiện một mẫu mà tin nhắn không dẫn đến thông báo trực tiếp người dùng, thông báo của bạn có thể bị giảm mức độ ưu tiên ở mức độ ưu tiên thông thường hoặc được uỷ quyền để Dịch vụ Google Play xử lý.

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

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

Các thông báo có mức độ ưu tiên cao (không phải là thông báo dữ liệu) đáp ứng các yêu cầu nhất định Dịch vụ Google Play sẽ proxy các tiêu chí thay vì giảm mức độ ưu tiên. Tức là Dịch vụ Google Play sẽ hiển thị thông báo trên cho ứng dụng mà không cần khởi động ứng dụng. Điều này được thực hiện để cung cấp trải nghiệm người dùng tổng thể tốt hơn trên các thiết bị Android.

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

  • Để phân tích để báo cáo thông báo qua proxy, ứng dụng của bạn phải sử dụng phiên bản SDK FCM 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 số thông báo nhận được so với số trước khi sử dụng proxy thông báo. Điều này là do Analytics cho thông báo qua proxy chỉ được báo cáo sau khi ứng dụng của bạn khởi động và có thể không được báo cáo nếu 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 sử dụng Android Q+ và Dịch vụ Google Play phiên bản 19054000 trở lên. Tin nhắn gửi qua API HTTP phiên bản 1 sẽ được xử lý qua proxy, nhưng các thông báo được gửi qua Firebase bảng điều khiển hoặc API cũ sẽ không được xử lý qua 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ì những lợi ích của nó pin và bộ nhớ của thiết bị, bạn có thể chọn không tham gia hành vi này trong bất kỳ cách:

  • Ở 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 giao hàng, bạn có thể xác định xem một thông điệp riêng lẻ có bị hạn chế hay không bằng cách so sánh mức độ ưu tiên được phân phối từ getPriority() với ban đầu mức độ ưu tiên, qua 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 tất cả tin nhắn của bạn cho Android giảm mức độ ưu tiên. Một số tin nhắn 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ẻ đó sẽ cho bạn cái nhìn tổng thể về tỷ lệ huỷ ưu tiên tin nhắn. 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á ứng dụng từ API Explorer.

  • 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 bạn có thể thấy chỉ số gửi thông báo bị giảm tới 15%. Để để báo cáo về tin nhắn qua 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ành công thông báo qua máy chủ proxy cũng như thông tin chi tiết về các tin nhắn không thể truy cập đã 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. Bởi vì một phần nhỏ người dùng thiết bị di động Android đang trên các mạng có độ trễ cao, tránh mở kết nối với máy chủ của bạn trước đang hiển thị một thông báo. Gọi lại máy chủ trước khi kết thúc 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 thêm nội dung thông báo trong thông báo FCM và hiển thị nội dung đó ngay lập tức. Nếu bạn cần để đồng bộ hoá nội dung bổ sung trong ứng dụng trên Android, bạn có thể lên lịch tác vụ bằng WorkManager để xử lý điều đó ở chế độ nền.