Notifikasi di Android 13 menggunakan model keikutsertaan, yang merupakan perubahan dari versi Android sebelumnya, yang menggunakan model keikutsertaan. Di Android 13, semua aplikasi harus meminta izin kepada pengguna sebelum mengirim permintaan notifikasi. Model ini membantu mengurangi gangguan notifikasi, meminimalkan kelebihan informasi, dan membantu pengguna mengontrol notifikasi apa yang muncul berdasarkan apa yang penting bagi mereka. Untuk mendukung model keikutsertaan, OEM harus mengimplementasikan perubahan dalam sistem izin waktu proses dan notifikasi.
Halaman ini menjelaskan apa yang harus diterapkan oleh OEM untuk mendukung perubahan ini dan cara memvalidasi penerapan tersebut.
Terapkan perubahan untuk pemberitahuan keikutsertaan
Dimulai dengan Android 13, aplikasi harus mendeklarasikan niatnya untuk mengirim notifikasi dengan meminta izin waktu proses android.permission.POST_NOTIFICATION
dari sistem sebelum dapat mengirim notifikasi.
Di Android 13 dan lebih tinggi, setelan yang menentukan apakah suatu aplikasi dapat mengirimkan notifikasi kepada pengguna disimpan di 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 mengirim notifikasi, dari sistem notifikasi ke sistem izin waktu proses. OEM juga harus mempertahankan API yang ada di sistem notifikasi yang menampilkan data tersebut ke developer aplikasi.
Perubahan pada sistem notifikasi dan izin didasarkan pada model keikutsertaan dari perilaku notifikasi pengguna dan dijelaskan di bagian Pedoman implementasi .
Perilaku notifikasi pengguna dalam model keikutsertaan
Tabel berikut mengilustrasikan perilaku notifikasi untuk berbagai versi aplikasi di perangkat yang menjalankan Android 13:
Perangkat di Android 13 | Aplikasi yang menargetkan Android 13 atau lebih tinggi | Aplikasi menargetkan versi yang lebih rendah dari Android 13 |
---|---|---|
Pemasangan baru | Notifikasi diblokir hingga diminta oleh aplikasi. Aplikasi mengontrol kapan harus meminta izin. | Notifikasi diblokir hingga diminta oleh OS. Izin diminta saat pertama kali menjalankan aplikasi. |
Aplikasi yang ada (upgrade) | Notifikasi diizinkan hingga diminta oleh aplikasi. Izin sementara diberikan hingga aplikasi meminta pada proses kualifikasi pertama. | Notifikasi diizinkan hingga diminta oleh OS. Izin sementara diberikan hingga aplikasi pertama kali dijalankan. |
Pedoman pelaksanaan
Untuk penerapan referensi, lihat layanan notifikasi , layanan izin dan layanan kebijakan . Untuk menerapkan pengecualian untuk penangan izin default, lihat Izin Waktu Proses .
Selama implementasi, gunakan panduan berikut tentang perilaku notifikasi pengguna untuk aplikasi yang menargetkan Android 13 atau SDK yang lebih rendah:
- Aplikasi yang baru diinstal di perangkat Android 13 tidak boleh mengirimkan notifikasi tanpa permintaan izin dari pengguna.
- Jika aplikasi menargetkan versi Android 13 dan yang lebih tinggi, notifikasi harus diblokir hingga diminta oleh aplikasi karena aplikasi mengontrol kapan dan apakah untuk meminta izin pengguna.
- Jika aplikasi menargetkan versi yang lebih rendah dari Android 13, notifikasi harus diblokir hingga diminta oleh OS. OS harus menunjukkan permintaan izin saat pertama kali menjalankan aplikasi.
Aplikasi apa pun yang ada di perangkat sebelum pemutakhiran ke Android 13, atau aplikasi apa pun yang dipulihkan melalui pencadangan dan pemulihan, harus diizinkan mengirim notifikasi hingga pengguna meluncurkan aktivitas dari aplikasi tersebut untuk pertama kalinya.
Untuk aplikasi yang menargetkan SDK versi Android 13 dan yang lebih tinggi, jika pengguna belum pernah menyesuaikan setelan notifikasi untuk aplikasi ini di level aplikasi atau
NotificationChannel
, cabut pemberian izin sementara. Aplikasi kemudian harus meminta izin kepada pengguna sebelum diizinkan untuk terus mengirimkan notifikasi.Jika aplikasi yang dimutakhirkan yang menargetkan Android 13 saat ini tidak memiliki izin pemberitahuan melalui hibah pemutakhiran sementara, dan pengguna telah meluncurkannya setidaknya sekali, aplikasi harus menampilkan permintaan izin pemberitahuan sebelum diizinkan untuk menjalankan layanan latar depan lebih lanjut.
Untuk aplikasi yang memiliki SDK target versi lebih rendah dari Android 13, hentikan peluncuran aktivitas pertama setelah aplikasi membuat setidaknya satu
NotificationChannel
untuk menampilkan permintaan izin yang menanyakan apakah pengguna ingin menerima notifikasi dari aplikasi.Jika pengguna sebelumnya telah menyesuaikan setelan notifikasi di tingkat aplikasi atau
NotificationChannel
untuk aplikasi di perangkat yang ditingkatkan atau di cadangan yang dipulihkan ke perangkat, setelan tingkat aplikasi harus dimigrasikan ke sistem izin dengan tandaFLAG_PERMISSION_USER_SET
. Tidak ada permintaan izin pemberitahuan lebih lanjut yang harus ditampilkan kepada pengguna kecuali jika aplikasi secara khusus memintanya.
Pencadangan dan pemulihan harus kompatibel mundur dan maju antara perangkat Android 13 dan perangkat dari versi OS sebelumnya. Data cadangan yang dihasilkan dari perangkat Android 13 harus dipulihkan ke versi OS sebelumnya, dan data cadangan dari versi OS sebelumnya harus dipulihkan ke perangkat Android 13.
Notifikasi media yang terkait dengan pemutaran media yang sedang berlangsung harus dikecualikan dari izin notifikasi.
Validasi perubahan pada sistem notifikasi dan izin
Untuk memvalidasi penerapan, jalankan pengujian berikut:
Tes unit sebagaimana ditentukan dalam
PreferencesHelperTest
,NotificationManagerServiceTest
.Tes manual apa pun yang menguji pemutakhiran dan pencadangan dan pemulihan.
Uji sistem Izin dan Pemberitahuan CTS apa pun yang mengirimkan pemberitahuan. Beberapa dari pengujian ini terletak di cts/tests/tests/permission/ , NotificationManagerTest.java , dan cts/tests/tests/notificationlegacy/ .