Android 13 (API level 33) dan yang lebih baru mendukung
izin runtime untuk mengirim
notifikasi yang tidak dikecualikan (termasuk Layanan Latar Depan (FGS))
dari aplikasi:
POST_NOTIFICATIONS
.
Perubahan ini membantu pengguna untuk berfokus pada notifikasi yang paling penting bagi
mereka.
Sebaiknya targetkan Android 13 atau yang lebih baru sesegera mungkin untuk memanfaatkan kontrol dan fleksibilitas tambahan dari fitur ini. Jika terus menargetkan 12L (API level 32) atau yang lebih rendah, Anda kehilangan beberapa fleksibilitas dengan meminta izin dalam konteks fungsi aplikasi Anda.
Mendeklarasikan izin
Untuk meminta izin notifikasi baru dari aplikasi Anda, update aplikasi agar menargetkan Android 13 dan selesaikan proses yang serupa dengan meminta izin runtime lainnya, seperti yang ditunjukkan dalam bagian berikut.
Izin yang perlu Anda deklarasikan di file manifes aplikasi akan muncul dalam cuplikan kode berikut:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Kemampuan aplikasi bergantung pada pilihan pengguna dalam dialog izin
Dalam dialog ini, pengguna memiliki tindakan berikut yang tersedia bagi mereka:
- Pilih izinkan
- Pilih jangan izinkan
- Geser menjauh dari dialog, tanpa menekan tombol apa pun
Bagian berikut ini menjelaskan perilaku aplikasi Anda berdasarkan tindakan yang dilakukan pengguna.
Pengguna memilih "Izinkan"
Jika pengguna memilih opsi izinkan, aplikasi Anda dapat melakukan hal berikut:
- Mengirimkan notifikasi. Semua saluran notifikasi diizinkan.
- Memposting notifikasi yang terkait dengan layanan latar depan. Notifikasi ini muncul di panel samping notifikasi.
Pengguna memilih "Jangan izinkan"
Jika pengguna memilih opsi jangan izinkan, aplikasi Anda tidak dapat mengirim notifikasi kecuali jika memenuhi syarat untuk pengecualian. Semua saluran notifikasi diblokir, kecuali untuk beberapa peran tertentu. Hal ini serupa dengan perilaku yang terjadi saat pengguna menonaktifkan secara manual semua notifikasi untuk aplikasi Anda di setelan sistem.
Perhatian: Jika aplikasi Anda menargetkan 12L atau versi lebih rendah dan pengguna mengetuk Jangan izinkan, meskipun hanya satu kali, pengguna tidak akan diminta lagi hingga salah satu dari hal berikut terjadi:
- Pengguna meng-uninstal dan menginstal ulang aplikasi Anda.
- Anda mengupdate aplikasi untuk menargetkan Android 13 atau yang lebih baru.
Pengguna menggeser dari dialog
Jika pengguna menggeser dari dialog—yaitu, mereka tidak memilih allow atau tidak izinkan—status izin notifikasi tidak berubah.
Pengaruh terhadap aplikasi yang baru diinstal
Jika pengguna menginstal aplikasi Anda di perangkat yang menjalankan Android 13 atau yang lebih baru, notifikasi aplikasi akan dinonaktifkan secara default. Aplikasi Anda harus menunggu dapat mengirim notifikasi hingga Anda meminta izin baru dan pengguna memberikan izin tersebut ke aplikasi Anda.
Waktu ditampilkannya dialog izin bergantung pada versi SDK target aplikasi Anda:
- Jika aplikasi Anda menargetkan Android 13 atau yang lebih tinggi, aplikasi memiliki kontrol penuh atas kapan dialog izin ditampilkan. Gunakan kesempatan ini untuk menjelaskan kepada pengguna mengapa aplikasi memerlukan izin ini, sehingga mendorong mereka untuk mengizinkannya.
- Jika aplikasi Anda menargetkan 12L (API level 32) atau lebih rendah, sistem akan menampilkan dialog izin saat pertama kali aplikasi memulai aktivitas setelah Anda membuat saluran notifikasi, atau saat memulai aktivitas lalu membuat saluran notifikasi pertamanya. Hal ini biasanya terjadi saat memulai aplikasi.
Pengaruh terhadap update pada aplikasi yang sudah ada
Untuk meminimalkan gangguan yang terkait dengan izin notifikasi, sistem secara otomatis memberikan izin di awal ke semua aplikasi yang memenuhi syarat saat pengguna mengupgrade perangkat mereka ke Android 13 atau yang lebih baru. Dengan kata lain, aplikasi ini dapat terus mengirimkan notifikasi kepada pengguna, dan pengguna tidak melihat permintaan izin runtime.
Kelayakan untuk pra-pemberian izin
Agar memenuhi syarat untuk pra-pemberian izin otomatis, aplikasi Anda harus memiliki saluran notifikasi yang sudah ada dan notifikasinya tidak dinonaktifkan secara eksplisit oleh pengguna di perangkat yang menjalankan 12L atau versi lebih rendah.
Jika pengguna menonaktifkan notifikasi untuk aplikasi Anda di perangkat yang menjalankan 12L atau lebih rendah, penolakan akan tetap ada saat perangkat diupgrade ke Android 13 atau yang lebih tinggi.
Pengecualian
Bagian ini berisi kumpulan notifikasi dan aplikasi yang dikecualikan dari perubahan perilaku izin notifikasi. Di Android 13 (level API 33) atau yang lebih tinggi, jika pengguna menolak izin notifikasi, mereka masih melihat notifikasi terkait ke layanan latar depan Pengelola Tugas tetapi tidak melihatnya di panel samping notifikasi.
Sesi media
Notifikasi yang terkait dengan sesi media dikecualikan dari perubahan perilaku ini.
Aplikasi yang dikonfigurasi untuk mengelola panggilan telepon secara mandiri
Jika aplikasi Anda mengonfigurasi dirinya sendiri untuk mengelola panggilan telepon secara mandiri, Anda
tidak memerlukan izin POST_NOTIFICATIONS
agar aplikasi dapat mengirim
notifikasi yang menggunakan
gaya notifikasi
Notification.CallStyle
.
Sistem menganggap aplikasi Anda telah mengonfigurasikan diri untuk mengelola panggilan telepon secara mandiri jika melakukan setiap hal berikut:
- Mendeklarasikan
izin
MANAGE_OWN_CALLS
. - Mengimplementasikan
antarmuka
ConnectionService
. - Mendaftar ke penyedia telekomunikasi perangkat dengan memanggil
registerPhoneAccount()
.
Menguji aplikasi
Anda dapat mengevaluasi pengaruh izin notifikasi terhadap aplikasi saat pertama kali digunakan di perangkat yang menjalankan Android 13 atau yang lebih baru. Tujuan mengikuti sekumpulan perintah Android Debug Bridge (ADB) memungkinkan Anda untuk menyimulasikan urutan pilihan pengguna dan upgrade perangkat yang paling umum tanpa perlu mereset perangkat pengujian:
Aplikasi baru diinstal di perangkat yang menjalankan Android 13 atau yang lebih baru:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
Pengguna tetap mengaktifkan notifikasi saat aplikasi diinstal di perangkat yang menjalankan 12L atau lebih rendah, lalu perangkat diupgrade ke Android 13 atau yang lebih baru:
adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
Pengguna menonaktifkan notifikasi secara manual saat aplikasi diinstal di perangkat yang menjalankan 12L atau lebih rendah, lalu perangkat diupgrade ke Android 13 atau yang lebih baru:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
Praktik terbaik
Bagian ini menjelaskan beberapa cara untuk menggunakan izin notifikasi baru secara efektif di aplikasi Anda.
Mengupdate versi SDK target aplikasi Anda
Untuk meningkatkan fleksibilitas aplikasi saat dialog izin muncul, update aplikasi Anda sehingga menargetkan Android 13 atau yang lebih baru.
Menunggu untuk menampilkan perintah izin notifikasi
Sebelum Anda meminta pengguna untuk memberikan izin apa pun, biarkan mereka memahami aplikasi Anda.
Pengguna baru mungkin ingin menjelajahi aplikasi dan menyadari secara langsung manfaat dari setiap permintaan notifikasi individual. Anda dapat memicu permintaan izin dari tindakan pengguna. Daftar berikut menunjukkan beberapa contoh waktu yang tepat untuk menampilkan permintaan izin notifikasi:
- Pengguna mengetuk tombol "bel notifikasi".
- Pengguna memilih untuk mengikuti akun media sosial seseorang.
- Pengguna mengirimkan pesanan untuk pengiriman makanan.
Gambar 1 menunjukkan alur kerja yang direkomendasikan untuk meminta izin
notifikasi. Kecuali
shouldShowRequestPermissionRationale()
menampilkan true
, aplikasi Anda tidak perlu menampilkan layar tengah—layar yang
memiliki teks judul "Dapatkan notifikasi!".
Atau, Anda dapat menetapkan permintaan untuk muncul setelah Anda memberi pengguna kesempatan untuk membiasakan diri dengan aplikasi Anda. Misalnya, Anda mungkin menunggu hingga ketiga atau keempat kalinya pengguna meluncurkan aplikasi Anda.
shouldShowRequestPermissionRationale()
menampilkan true
.
Meminta izin dalam konteks
Saat Anda meminta izin notifikasi dalam aplikasi, lakukan dalam konteks yang benar, sehingga terlihat jelas apa kegunaan notifikasi tersebut dan alasan pengguna harus memilih ikut serta. Misalnya, aplikasi email mungkin menyertakan opsi untuk mengirim notifikasi bagi setiap email baru, atau hanya email ketika pengguna adalah penerima satu-satunya.
Gunakan peluang ini untuk memberikan transparansi tentang niat Anda, dan akan lebih besar kemungkinan pengguna untuk memberikan izin notifikasi ke aplikasi Anda.
Memastikan aplikasi Anda dapat mengirim notifikasi
Sebelum aplikasi Anda mengirim notifikasi, pastikan apakah pengguna telah mengaktifkan
notifikasi untuk aplikasi Anda. Untuk melakukannya, panggil
areNotificationsEnabled()
.
Menggunakan izin secara bertanggung jawab
Setelah Anda menerima persetujuan untuk mengirim notifikasi, jangan lupa untuk menggunakan izin secara bertanggung jawab. Pengguna dapat melihat jumlah notifikasi harian yang dikirim aplikasi Anda, dan mereka dapat mencabut izin kapan saja.