Izin runtime notifikasi

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:

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:

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 izinkan atau jangan izinkan—status izin notifikasi tidak akan 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 mengirim notifikasi sampai 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 baru, jika pengguna menolak izin notifikasi, mereka masih melihat notifikasi terkait ke layanan latar depan Pengelola Tugas namun 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:

  1. Mendeklarasikan izin MANAGE_OWN_CALLS.
  2. Mengimplementasikan antarmuka ConnectionService.
  3. 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. Kumpulan perintah Android Debug Bridge (ADB) berikut memungkinkan Anda menyimulasikan urutan paling umum dari pilihan pengguna dan upgrade perangkat 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.

Setelah login, pengguna diberikan
   undangan untuk mendapatkan notifikasi terkait pembaruan perjalanan. Setelah pengguna menekan
   tombol setuju, aplikasi akan meminta izin baru, yang menyebabkan dialog
   sistem muncul
Gambar 1. Rekomendasi alur kerja berbasis pengguna untuk meminta izin notifikasi. Layar tengah hanya diperlukan jika 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.