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 (sử dụng mô hình chọn không tham gia). Trong Android 13, tất cả ứng dụng đều phải yêu cầu người dùng cấp quyền trước khi gửi lời nhắc thông báo. Mô hình này giúp giảm 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 thông báo quan trọng với họ. Để hỗ trợ mô hình chọn tham gia, nhà sản xuất thiết bị gốc (OEM) phải triển khai các thay đổi trong hệ thống thông báo và quyền khi bắt đầu chạy.
Trang này mô tả những việc mà nhà sản xuất thiết bị gốc (OEM) phải triển khai để hỗ trợ thay đổi này và cách xác thực việc triển khai.
Triển khai các thay đổi đối với thông báo chọn sử dụng
Kể từ Android 13, ứ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 khi bắt đầu 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, chế độ cài đặt xác định xem một ứng dụng có thể gửi thông báo cho người dùng hay không được lưu trữ trong hệ thống quyền. Trước Android 13, chế độ 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 một ứ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 quyền khi bắt đầu chạy. Nhà sản xuất thiết bị gố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.
Các thay đổi đối với hệ thống thông báo và quyền dựa trên mô hình chọn tham gia hành vi thông báo cho 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 cho người dùng trong mô hình chọn sử dụng
Bảng sau đây minh hoạ hành vi thông báo cho nhiều phiên bản ứng dụng trên một thiết bị chạy Android 13:
Thiết bị chạy Android 13 | Ứng dụng nhắm đến Android 13 trở lên | Ứng dụng nhắm đến phiên bản Android 13 trở xuống |
---|---|---|
Lượt cài đặt mới | Thông báo sẽ bị chặn cho đến khi ứng dụng nhắc.
Ứng dụng kiểm soát thời điểm yêu cầu cấp quyền. |
Thông báo sẽ bị chặn cho đến khi hệ điều hành nhắc.
Hệ thống sẽ yêu cầu cấp quyền trong lần chạy đầu tiên của ứng dụng. |
Ứng dụng hiện có (bản nâng cấp) | Cho phép thông báo cho đến khi ứng dụng nhắc.
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. |
Cho phép thông báo cho đến khi hệ điều hành nhắc.
Quyền tạm thời được cấp cho đến lần chạy đầu tiên của ứng dụng. |
Nguyên tắc triển khai
Để triển khai tham chiếu, hãy tham khảo dịch vụ thông báo, dịch vụ quyền và dịch vụ chính sách. Để triển khai các trường hợp ngoại lệ cho trình xử lý quyền mặc định, hãy xem phần Quyền khi bắt đầu chạy.
Trong quá trình triển khai, hãy sử dụng các nguyên tắc sau đây về hành vi thông báo cho người dùng đối với các ứng dụng nhắm đến 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 không phê duyệt lời nhắc cấp quyền.
- 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 ứng dụng nhắc, vì ứng dụng kiểm soát thời điểm và liệu có yêu cầu người dùng cấp quyền hay không.
- Nếu ứng dụng nhắm đến các phiên bản thấp hơn Android 13, thì bạn phải chặn thông báo cho đến khi hệ điều hành nhắc. Hệ điều hành phải hiển thị lời nhắc cấp quyền trong lần chạy đầu tiên của ứng dụng.
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 mọi ứng dụng đã được khôi phục thông qua tính năng 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 ứng dụng nhắm đến SDK phiên bản Android 13 trở lên, nếu trước đây người dùng chưa tuỳ chỉnh chế độ cài đặt thông báo cho ứng dụng này ở cấp ứng dụng hoặc cấp
NotificationChannel
, hãy thu hồi quyền tạm thời cấp. Sau đó, ứng dụng phải yêu cầu người dùng cấp quyền 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 đến Android 13 hiện không có quyền gửi thông báo thông qua quyền cấp nâng cấp tạm thời và người dùng đã 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 cấp quyền gửi thông báo trước khi được phép chạy bất kỳ dịch vụ nào khác trên nền trước.
Đối với các ứng dụng có SDK mục tiêu là các phiên bản thấp hơn Android 13, hãy chặn lần chạy hoạt động đầ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 quyền 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 đã tuỳ chỉnh chế độ 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 cho thiết bị, thì chế độ cài đặt cấp ứng dụng phải được di chuyển vào hệ thống quyền bằng cờFLAG_PERMISSION_USER_SET
. Không được hiển thị thêm lời nhắc cấp quyền thông báo cho người dùng, trừ phi ứng dụng yêu cầu cụ thể.
Tính năng sao lưu và khôi phục phải tương thích ngược và tương thích tiến giữa thiết bị Android 13 và thiết bị chạy phiên bản hệ điều hành cũ. Dữ liệu sao lưu được tạo từ thiết bị Android 13 phải khôi phục về 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ũ phải khôi phục trên thiết bị Android 13.
Các thông báo về nội dung nghe nhìn liên kết với quá trình phát nội dung nghe nhìn đang diễn ra phải được miễn quyền gửi 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 quá trình triển khai, hãy chạy các chương trình kiểm thử sau:
Kiểm thử đơn vị như được chỉ định trong
PreferencesHelperTest
,NotificationManagerServiceTest
.Mọi kiểm thử thủ công kiểm thử việc nâng cấp, sao lưu và khôi phục.
Mọi kiểm thử hệ thống về Quyền và Thông báo của CTS đều gửi thông báo. Một số kiểm thử này nằm trong cts/tests/tests/permission/, NotificationManagerTest.java và cts/tests/tests/notificationlegacy/.