Notification Permission — ini adalah izin yang diperlukan aplikasi untuk mengirim notifikasi push dan notifikasi lokal kepada pengguna. Mulai dari Android 13 dan iOS 12, aplikasi wajib meminta izin ini saat runtime melalui dialog sistem. Menurut Android Developers, 2024, tanpa persetujuan eksplisit pengguna, aplikasi tidak dapat menampilkan notifikasi pada perangkat dengan Android 13 dan yang lebih baru.
Poin utama
Notification Permission — ini adalah izin sistem yang mengatur kemampuan aplikasi untuk mengirim notifikasi kepada pengguna. Hingga Android 13, semua aplikasi dapat menampilkan notifikasi tanpa diminta — cukup dengan mendeklarasikan izin di manifes. Namun dengan meningkatnya spam dan notifikasi yang mengganggu, Google memberlakukan permintaan runtime wajib, mirip dengan iOS.
Di iOS, izin notifikasi sudah wajib sejak iOS 8, dan mulai iOS 12 muncul notifikasi sementara (provisional) — notifikasi senyap yang dikirimkan tanpa suara dan ditampilkan di Pusat Notifikasi tanpa permintaan eksplisit. Notifikasi sementara memungkinkan pengembang untuk menunjukkan nilai notifikasi kepada pengguna sebelum meminta izin penuh.
Menurut Localytics (2024), 61% pengguna iOS dan 55% pengguna Android menyetujui penerimaan notifikasi push setelah diminta. Tingkat konversi persetujuan secara langsung tergantung pada konteks permintaan: aplikasi yang meminta izin setelah interaksi berharga pertama mendapatkan 40% lebih banyak persetujuan daripada yang meminta saat peluncuran pertama.
Evolusi izin notifikasi menunjukkan bagaimana platform secara bertahap membatasi akses aplikasi ke saluran komunikasi ini. Memahami evolusi ini membantu pengembang menangani berbagai versi sistem operasi dengan benar.
Hingga Android 13 (2022), aplikasi apa pun dapat menampilkan notifikasi tanpa persetujuan pengguna. Android 8.0 (2017) memperkenalkan saluran notifikasi, Android 12 (2021) menambahkan pemblokiran otomatis notifikasi yang mengganggu, dan akhirnya Android 13 mewajibkan permintaan POST_NOTIFICATIONS saat runtime. Untuk aplikasi dengan targetSdkVersion di bawah 33, sistem secara otomatis memberikan izin, tetapi Google Play memerlukan pembaruan targetSdkVersion ke 33+ sejak Agustus 2023.
iOS 8 (2014) memperkenalkan permintaan izin wajib melalui UIUserNotificationSettings. iOS 10 (2016) menghadirkan UNUserNotificationCenter dengan dukungan notifikasi kaya. iOS 12 (2018) menambahkan notifikasi sementara dan notifikasi yang dikelompokkan. iOS 15 (2021) memperkenalkan Focus Mode yang dapat memblokir notifikasi terlepas dari izin aplikasi. App Tracking Transparency (iOS 14.5) tidak terkait dengan notifikasi tetapi juga mempengaruhi budaya permintaan izin secara umum.
Saat ini kedua platform memerlukan permintaan Notification Permission saat runtime. Pengembang tidak dapat lagi mengandalkan pengaktifan otomatis notifikasi. Pengguna memiliki kontrol penuh atas aplikasi mana yang dapat memberi tahu mereka. Saluran notifikasi di Android dan kategori notifikasi di iOS memungkinkan pengguna untuk menyesuaikan jenis notifikasi yang diterima secara tepat.
Notification Permission di Android dilakukan melalui izin POST_NOTIFICATIONS yang dideklarasikan di manifes, dengan permintaan runtime untuk Android 13+.
Untuk Android 13+ Anda harus mendeklarasikan izin POST_NOTIFICATIONS di AndroidManifest.xml. Untuk kompatibilitas mundur dengan Android 12 dan yang lebih rendah, izin diberikan secara otomatis oleh sistem — tidak diperlukan tindakan tambahan.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
Permintaan izin POST_NOTIFICATIONS dilakukan melalui Activity Result API. Penting untuk memeriksa versi SDK: di Android 12 dan yang lebih rendah, permintaan tidak diperlukan, izin dianggap diberikan secara otomatis.
private val notificationPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (granted) {
createNotificationChannel()
showPushNotification()
} else {
logPermissionDenied()
}
}
fun requestNotificationAccess() {
if (Build.version.SDK_INT <= Build.VERSION_CODES.S_V2) {
// Android 12 dan lebih rendah — izin diberikan secara otomatis
showNotification()
return
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
showNotification()
} else {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
Di Android 8.0+, aplikasi harus membuat saluran notifikasi melalui NotificationChannel sebelum mengirim notifikasi pertama. Saluran memiliki kepentingan (importance) dari IMPORTANCE_NONE hingga IMPORTANCE_HIGH, yang menentukan apakah notifikasi akan ditampilkan dengan suara dan sebagai banner. Jika pengguna menonaktifkan notifikasi untuk aplikasi, saluran baru tidak akan berpengaruh sampai diaktifkan kembali di pengaturan. Disarankan untuk membuat saluran terpisah untuk berbagai jenis notifikasi: pesan, iklan, peristiwa sistem.
private fun createNotificationChannel() {
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"Pesan",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Notifikasi tentang pesan baru"
enableVibration = true
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
Notification Permission di iOS diminta melalui UNUserNotificationCenter. Apple merekomendasikan pendekatan dua langkah: pertama minta notifikasi sementara, kemudian setelah menunjukkan nilai, izin penuh.
Notifikasi sementara adalah notifikasi senyap yang masuk ke Pusat Notifikasi tanpa suara dan banner. Mereka tidak memerlukan persetujuan eksplisit pengguna dan memungkinkan aplikasi untuk menunjukkan nilai notifikasi sebelum permintaan penuh. Setelah menerima beberapa notifikasi sementara, pengguna dapat mengaktifkan notifikasi penuh melalui menu di notifikasi itu sendiri.
import UserNotifications
func requestNotificationPermission() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if let error = error {
print("Notification error: \(error.localizedDescription)")
return
}
if granted {
registerForRemoteNotifications()
} else {
handleDeniedPermission()
}
}
}
func requestProvisionalOnly() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.provisional, .alert, .badge, .sound]) { granted, error in
// Provisional — pengguna tidak melihat dialog
// Notifikasi datang tanpa suara di Pusat Notifikasi
registerForRemoteNotifications()
}
}
Status Notification Permission saat ini di iOS dapat diperoleh melalui UNUserNotificationCenter.current().getNotificationSettings. Status .authorized, .denied, .provisional, atau .notDetermined memungkinkan aplikasi memilih perilaku yang tepat. Setelah penolakan pertama, dialog sistem tidak ditampilkan lagi — Anda harus mengarahkan pengguna ke Pengaturan melalui UIApplication.openSettingsURLString. Apple juga merekomendasikan penanganan status .ephemeral (iOS 17+), yang menyediakan notifikasi sementara untuk skenario tertentu.
Praktik terbaik meminta Notification Permission bertujuan untuk meningkatkan tingkat konversi persetujuan dan mengurangi pengguna yang pergi. Permintaan yang salah tidak hanya dapat menghilangkan kemampuan aplikasi untuk mengirim notifikasi, tetapi juga menyebabkan penghapusan aplikasi.
Anti-pola yang paling umum — meminta Notification Permission saat peluncuran pertama aplikasi. Pengguna belum memahami nilai aplikasi dan kemungkinan besar akan menolak. Momen optimal — setelah pengguna melakukan tindakan target pertama: melakukan pemesanan, mengirim pesan, berlangganan pembaruan. Permintaan pasca-nilai meningkatkan tingkat konversi persetujuan hingga 65-75%.
Sebelum dialog sistem, tampilkan layar Anda sendiri dengan contoh notifikasi yang akan diterima pengguna. Tunjukkan mockup notifikasi masa depan dengan teks dan ikon. Jika pengguna melihat bahwa notifikasi akan berguna dan tidak mengganggu, mereka lebih mungkin untuk menyetujui. Contoh notifikasi di layar pendahuluan adalah teknik efektif yang meningkatkan konversi sebesar 35-50%.
Permintaan proaktif Notifikasi Sementara di iOS memungkinkan pengiriman notifikasi tanpa persetujuan eksplisit pengguna. Jika pengguna melihat nilai dalam notifikasi ini, mereka dapat mengaktifkan notifikasi penuh melalui menu konteks notifikasi. Apple merekomendasikan pendekatan ini untuk aplikasi berita, cuaca, dan layanan lain di mana notifikasi bersifat informatif, bukan transaksional. Menurut Apple WWDC 2024, pendekatan ini meningkatkan tingkat konversi persetujuan penuh sebesar 20-30%.
Pertanyaan yang sering diajukan
Setelah penolakan, dialog sistem tidak ditampilkan lagi. Satu-satunya cara untuk mengaktifkan notifikasi adalah dengan mengarahkan pengguna ke pengaturan sistem melalui Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) di Android atau UIApplication.openSettingsURLString di iOS. Tampilkan layar dengan petunjuk dan tombol navigasi.
Di Android 12 dan yang lebih rendah, Notification Permission tidak diperlukan — semua aplikasi dapat mengirim notifikasi tanpa diminta. Namun pengguna dapat menonaktifkan notifikasi kapan saja melalui pengaturan sistem. Mulai Android 13, permintaan runtime wajib untuk targetSdkVersion 33+.
NotificationChannel — adalah kategori notifikasi yang diperkenalkan di Android 8.0. Setiap saluran memiliki nama, deskripsi, kepentingan (importance), dan grup. Pengguna dapat menonaktifkan saluran individual tanpa menonaktifkan semua notifikasi aplikasi. Misalnya, saluran „Pesan baru” dan saluran „Buletin iklan” dapat dikonfigurasi secara berbeda.
Di Android 13+ tanpa POST_NOTIFICATIONS, setiap panggilan NotificationManager.notify akan diabaikan oleh sistem. Di iOS tanpa izin UNUserNotificationCenter, notifikasi tidak dikirimkan. Pengecualian: Provisional di iOS (tanpa suara, hanya di Pusat Notifikasi) dan Android 12- (izin tidak diperlukan).
Di Android gunakan NotificationManagerCompat.areNotificationsEnabled(). Di iOS panggil UNUserNotificationCenter.current().getNotificationSettings dan periksa properti authorizationStatus. Untuk Android, periksa juga kepentingan saluran: NotificationChannel.getImportance() tidak boleh IMPORTANCE_NONE.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga