Quyền thông báo cho thông báo chọn tham gia

Thông báo trong Android 13 sử dụng mô hình chọn tham gia, đây là một thay đổi so với các phiên bản Android trước đây sử dụng mô hình chọn không tham gia. Trong Android 13, tất cả ứng dụng đều phải xin phép người dùng trước khi gửi lời nhắc thông báo. Mô hình này giúp giảm thiểu tình trạng gián đoạn thông báo, giảm thiểu tình trạng quá tải thông tin và giúp người dùng kiểm soát thông báo nào xuất hiện dựa trên những gì quan trọng đối với họ. Để hỗ trợ mô hình chọn tham gia, OEM phải triển khai các thay đổi trong hệ thống cấp phép thông báo và thời gian chạy.

Trang này mô tả những gì OEM phải triển khai để hỗ trợ thay đổi này và cách xác thực việc triển khai.

Thực hiện các thay đổi đối với thông báo chọn tham gia

Bắt đầu từ Android 13, các ứng dụng phải khai báo ý định gửi thông báo bằng cách yêu cầu quyền trong thời gian chạy android.permission.POST_NOTIFICATION từ hệ thống trước khi có thể gửi thông báo.

Trong Android 13 trở lên, cài đặt xác định xem ứng dụng có thể gửi thông báo cho người dùng hay không sẽ được lưu trữ trong hệ thống cấp phép. Trước Android 13, cài đặt này được lưu trữ trong hệ thống thông báo. Do đó, OEM phải di chuyển dữ liệu thông báo hiện có về việc liệu ứng dụng có được phép gửi thông báo hay không, từ hệ thống thông báo sang hệ thống cấp phép thời gian chạy. Các OEM cũng phải duy trì các API hiện có trong hệ thống thông báo để hiển thị dữ liệu đó cho nhà phát triển ứng dụng.

Những thay đổi đối với hệ thống thông báo và quyền được dựa trên mô hình chọn tham gia về hành vi thông báo của người dùng và được mô tả trong phần Nguyên tắc triển khai .

Hành vi của thông báo người dùng trong mô hình chọn tham gia

Bảng sau đây minh họa hành vi thông báo cho nhiều phiên bản ứng dụng khác nhau trên thiết bị chạy Android 13:

Thiết bị trên Android 13 Ứng dụng nhắm mục tiêu Android 13 trở lên Ứng dụng nhắm mục tiêu phiên bản thấp hơn Android 13
Cài đặt mới Thông báo bị chặn cho đến khi được ứng dụng nhắc.

Ứng dụng kiểm soát thời điểm xin phép.

Thông báo bị chặn cho đến khi được hệ điều hành nhắc nhở.

Quyền được yêu cầu trong lần chạy đầu tiên của ứng dụng.

Ứng dụng hiện có (nâng cấp) Thông báo được cho phép cho đến khi được ứng dụng nhắc nhở.

Quyền tạm thời được cấp cho đến khi ứng dụng yêu cầu trong lần chạy đủ điều kiện đầu tiên.

Thông báo được cho phép cho đến khi được hệ điều hành nhắc nhở.

Quyền tạm thời được cấp cho đến lần chạy ứng dụng đầu tiên.

Hướng dẫn thực hiện

Để tham khảo cách triển khai, hãy tham khảo dịch vụ thông báo , dịch vụ cấp phépdịch vụ chính sách . Để triển khai các ngoại lệ cho trình xử lý quyền mặc định, hãy xem Quyền trong thời gian chạy .

Trong quá trình triển khai, hãy sử dụng các nguyên tắc sau về hành vi thông báo của người dùng đối với các ứng dụng nhắm mục tiêu SDK Android 13 trở xuống:

  • Các ứng dụng mới cài đặt trên thiết bị Android 13 không được gửi thông báo nếu người dùng chưa phê duyệt lời nhắc cấp phép.
    • Nếu ứng dụng nhắm đến các phiên bản Android 13 trở lên thì thông báo phải bị chặn cho đến khi được ứng dụng nhắc vì ứng dụng sẽ kiểm soát thời điểm và liệu có yêu cầu sự cho phép của người dùng hay không.
    • Nếu ứng dụng nhắm đến các phiên bản thấp hơn Android 13 thì thông báo phải bị chặn cho đến khi được hệ điều hành nhắc. Hệ điều hành phải hiển thị lời nhắc cấp phép trong lần chạy ứng dụng đầu tiên.
  • Mọi ứng dụng tồn tại trên thiết bị trước khi nâng cấp lên Android 13 hoặc bất kỳ ứng dụng nào đã được khôi phục thông qua sao lưu và khôi phục đều phải được phép gửi thông báo cho đến lần đầu tiên người dùng khởi chạy một hoạt động từ ứng dụng đó.

    • Đối với các ứng dụng nhắm mục tiêu SDK thuộc phiên bản Android 13 trở lên, nếu trước đó người dùng chưa tùy chỉnh cài đặt thông báo cho ứng dụng này ở cấp ứng dụng hoặc cấp NotificationChannel , thì hãy thu hồi quyền tạm thời cấp. Sau đó, các ứng dụng phải xin phép người dùng trước khi được phép tiếp tục gửi thông báo.

      Nếu một ứng dụng đã nâng cấp nhắm mục tiêu Android 13 hiện không có quyền thông báo thông qua cấp phép nâng cấp tạm thời và người dùng đã khởi chạy ứng dụng đó ít nhất một lần thì ứng dụng đó phải hiển thị lời nhắc về quyền thông báo trước khi được phép chạy thêm bất kỳ dịch vụ nào trên nền trước.

    • Đối với các ứng dụng có SDK mục tiêu thuộc phiên bản thấp hơn Android 13, hãy chặn hoạt động khởi chạy đầu tiên sau khi ứng dụng đã tạo ít nhất một NotificationChannel để hiển thị lời nhắc cấp phép hỏi xem người dùng có muốn nhận thông báo từ ứng dụng hay không.

      Nếu trước đây người dùng đã tùy chỉnh cài đặt thông báo ở cấp ứng dụng hoặc NotificationChannel cho một ứng dụng trên thiết bị nâng cấp hoặc trong bản sao lưu đang được khôi phục vào thiết bị thì cài đặt cấp ứng dụng phải được di chuyển vào hệ thống cấp phép bằng cờ FLAG_PERMISSION_USER_SET . Không có lời nhắc cấp phép thông báo nào nữa phải được hiển thị cho người dùng trừ khi ứng dụng yêu cầu cụ thể.

  • Sao lưu và khôi phục phải tương thích ngược và xuôi giữa thiết bị Android 13 và thiết bị từ phiên bản hệ điều hành cũ hơn. Dữ liệu sao lưu được tạo từ thiết bị Android 13 phải khôi phục trên phiên bản hệ điều hành cũ hơn và dữ liệu sao lưu từ phiên bản hệ điều hành cũ hơn phải khôi phục trên thiết bị Android 13.

  • Thông báo phương tiện liên quan đến việc phát lại phương tiện đang diễn ra phải được miễn quyền thông báo.

Xác thực các thay đổi đối với hệ thống thông báo và quyền

Để xác thực việc triển khai, hãy chạy các thử nghiệm sau: