Notifikasi di Android 13 menggunakan model keikutsertaan, yang merupakan perubahan dari versi Android sebelumnya, yang menggunakan model penonaktifan. Di Android 13, semua aplikasi harus meminta izin pengguna sebelum mengirimkan dialog notifikasi. Model ini membantu mengurangi gangguan notifikasi, meminimalkan kelebihan informasi, dan membantu pengguna mengontrol notifikasi yang muncul berdasarkan hal yang penting bagi mereka. Untuk mendukung model keikutsertaan, OEM harus menerapkan perubahan pada sistem izin notifikasi dan runtime.
Halaman ini menjelaskan apa yang harus diterapkan OEM untuk mendukung perubahan ini dan cara memvalidasi penerapan.
Menerapkan perubahan untuk notifikasi keikutsertaan
Mulai Android 13, aplikasi harus mendeklarasikan niatnya untuk mengirim notifikasi dengan meminta izin runtime android.permission.POST_NOTIFICATION
dari sistem sebelum dapat mengirim notifikasi.
Di Android 13 dan yang lebih tinggi, setelan yang menentukan apakah aplikasi dapat mengirim notifikasi kepada pengguna disimpan dalam sistem izin. Sebelum Android 13, setelan ini disimpan di sistem notifikasi. Oleh karena itu, OEM harus memigrasikan data notifikasi yang ada tentang apakah aplikasi diizinkan untuk mengirim notifikasi, dari sistem notifikasi ke sistem izin runtime. OEM juga harus mempertahankan API yang ada dalam sistem notifikasi yang menampilkan data tersebut kepada developer aplikasi.
Perubahan pada sistem notifikasi dan izin didasarkan pada model keikutsertaan perilaku notifikasi pengguna dan dijelaskan di bagian Panduan penerapan.
Perilaku notifikasi pengguna dalam model keikutsertaan
Tabel berikut menggambarkan perilaku notifikasi untuk berbagai versi aplikasi di perangkat yang menjalankan Android 13:
Perangkat yang menjalankan Android 13 | Aplikasi yang menargetkan Android 13 atau yang lebih tinggi | Aplikasi yang menargetkan versi yang lebih rendah dari Android 13 |
---|---|---|
Penginstalan baru | Notifikasi diblokir hingga diminta oleh aplikasi.
Aplikasi mengontrol kapan harus meminta izin. |
Notifikasi diblokir hingga diminta oleh OS.
Izin diminta saat aplikasi dijalankan pertama kali. |
Aplikasi yang sudah ada (upgrade) | Notifikasi diizinkan hingga diminta oleh aplikasi.
Izin sementara diberikan hingga aplikasi meminta pada saat menjalankan kualifikasi pertama. |
Notifikasi diizinkan hingga diminta oleh OS.
Izin sementara diberikan hingga aplikasi dijalankan pertama kali. |
Panduan penerapan
Untuk penerapan referensi, lihat notification service, permission service, dan policy service. Untuk menerapkan pengecualian untuk pengendali izin default, lihat Izin Runtime.
Selama penerapan, gunakan panduan berikut tentang perilaku notifikasi pengguna untuk aplikasi yang menargetkan SDK Android 13 atau yang lebih rendah:
- Aplikasi yang baru diinstal di perangkat Android 13 tidak boleh mengirim notifikasi tanpa pengguna menyetujui dialog izin.
- Jika aplikasi menargetkan Android 13 dan yang lebih tinggi, notifikasi harus diblokir hingga diminta oleh aplikasi karena aplikasi mengontrol kapan dan apakah akan meminta izin pengguna.
- Jika aplikasi menargetkan versi yang lebih rendah dari Android 13, notifikasi harus diblokir hingga diminta oleh OS. OS harus menampilkan dialog izin saat aplikasi dijalankan pertama kali.
Setiap aplikasi yang ada di perangkat sebelum upgrade ke Android 13, atau aplikasi yang dipulihkan melalui pencadangan dan pemulihan, harus diizinkan untuk mengirim notifikasi hingga pengguna pertama kali meluncurkan aktivitas dari aplikasi tersebut.
Untuk aplikasi yang menargetkan SDK versi Android 13 dan yang lebih tinggi, jika pengguna belum pernah menyesuaikan setelan notifikasi untuk aplikasi ini di tingkat aplikasi atau
NotificationChannel
, batalkan pemberian izin sementara. Selanjutnya, aplikasi harus meminta izin pengguna sebelum diizinkan untuk terus mengirim notifikasi.Jika aplikasi yang diupgrade dan menargetkan Android 13 saat ini tidak memiliki izin notifikasi melalui pemberian upgrade sementara, dan pengguna telah meluncurkannya setidaknya sekali, aplikasi harus menampilkan dialog izin notifikasi sebelum diizinkan untuk menjalankan layanan latar depan lebih lanjut.
Untuk aplikasi yang memiliki SDK target versi lebih rendah dari Android 13, intersep peluncuran aktivitas pertama setelah aplikasi membuat setidaknya satu
NotificationChannel
untuk menampilkan dialog izin yang menanyakan apakah pengguna ingin menerima notifikasi dari aplikasi.Jika sebelumnya pengguna menyesuaikan setelan notifikasi di tingkat aplikasi atau
NotificationChannel
untuk aplikasi di perangkat yang diupgrade atau dalam cadangan yang dipulihkan ke perangkat, setelan tingkat aplikasi harus dimigrasikan ke sistem izin dengan tandaFLAG_PERMISSION_USER_SET
. Tidak ada lagi dialog izin notifikasi yang harus ditampilkan kepada pengguna kecuali jika aplikasi secara khusus memintanya.
Pencadangan dan pemulihan harus kompatibel dengan versi lama dan baru antara perangkat Android 13 dan perangkat dari versi OS sebelumnya. Data cadangan yang dibuat dari perangkat Android 13 harus dipulihkan ke versi OS yang lebih lama, dan data cadangan dari versi OS yang lebih lama harus dipulihkan ke perangkat Android 13.
Notifikasi media yang terkait dengan pemutaran media yang sedang berlangsung harus dikecualikan dari izin notifikasi.
Memvalidasi perubahan pada sistem notifikasi dan izin
Untuk memvalidasi penerapan, jalankan pengujian berikut:
Pengujian unit seperti yang ditentukan dalam
PreferencesHelperTest
,NotificationManagerServiceTest
.Setiap pengujian manual yang menguji upgrade serta pencadangan dan pemulihan.
Setiap pengujian sistem Izin dan Notifikasi CTS yang mengirim notifikasi. Beberapa pengujian ini terletak di cts/tests/tests/permission/, NotificationManagerTest.java, dan cts/tests/tests/notificationlegacy/.