Notification Permission — ito ang pahintulot na kailangan ng app upang magpadala ng mga push notification at lokal na notification sa user. Simula sa Android 13 at iOS 12, ang mga app ay kinakailangang humingi ng pahintulot na ito sa runtime sa pamamagitan ng system dialog. Ayon sa Android Developers, 2024, nang walang malinaw na pahintulot ng user, hindi maaaring magpakita ang app ng mga notification sa mga device na may Android 13 at mas bago.
Mga pangunahing punto
Notification Permission — ito ay isang system pahintulot na kumokontrol sa kakayahan ng app na magpadala ng mga notification sa user. Hanggang sa Android 13, lahat ng app ay maaaring magpakita ng mga notification nang hindi humihingi — sapat na upang ideklara ang pahintulot sa manifest. Ngunit sa pagtaas ng spam at nakakainis na mga notification, ipinatupad ng Google ang mandatoryong runtime na paghingi, katulad ng iOS.
Sa iOS, ang pahintulot ng notification ay sapilitan mula pa sa iOS 8, at simula sa iOS 12 ay lumitaw ang mga provisional notification — mga tahimik na notification na inihatid nang walang tunog at ipinapakita sa Notification Center nang walang malinaw na paghingi. Ang mga provisional notification ay nagpapahintulot sa developer na ipakita sa user ang halaga ng mga notification bago humingi ng buong pahintulot.
Ayon sa Localytics (2024), 61% ng mga gumagamit ng iOS at 55% ng mga gumagamit ng Android ay pumapayag na makatanggap ng mga push notification pagkatapos ng paghingi. Ang rate ng conversion ng pahintulot ay direktang nakadepende sa konteksto ng paghingi: ang mga app na humihingi ng pahintulot pagkatapos ng unang mahalagang interaksyon ay nakakakuha ng 40% mas maraming pahintulot kaysa sa mga humihingi sa unang paglunsad.
Ebolusyon ng mga pahintulot ng notification ay nagpapakita kung paano unti-unting nilimitahan ng mga platform ang access ng mga app sa channel na ito ng komunikasyon. Ang pag-unawa sa ebolusyong ito ay tumutulong sa developer na mahawakan nang tama ang iba’t ibang bersyon ng operating system.
Hanggang sa Android 13 (2022), anumang app ay maaaring magpakita ng mga notification nang walang pahintulot ng user. Android 8.0 (2017) nagpakilala ng mga channel ng notification, Android 12 (2021) nagdagdag ng awtomatikong pag-block ng mga nakakainis na notification, at sa wakas Android 13 ay nag-atas ng paghingi ng POST_NOTIFICATIONS sa runtime. Para sa mga app na ang targetSdkVersion ay mas mababa sa 33, awtomatikong nagbibigay ang system ng pahintulot, ngunit ang Google Play ay nangangailangan ng pag-update ng targetSdkVersion sa 33+ mula noong Agosto 2023.
iOS 8 (2014) nagpakilala ng mandatoryong paghingi ng pahintulot sa pamamagitan ng UIUserNotificationSettings. iOS 10 (2016) nagpakilala ng UNUserNotificationCenter na may suporta para sa rich notifications. iOS 12 (2018) nagdagdag ng provisional notification at grouped notification. iOS 15 (2021) nagpakilala ng Focus Mode, na maaaring mag-block ng mga notification anuman ang pahintulot ng app. App Tracking Transparency (iOS 14.5) ay hindi nauugnay sa mga notification ngunit nakaimpluwensya rin sa pangkalahatang kultura ng paghingi ng pahintulot.
Sa kasalukuyan, ang parehong platform ay nangangailangan ng paghingi ng Notification Permission sa runtime. Hindi na maaaring umasa ang developer sa awtomatikong pag-activate ng mga notification. Ang user ay may ganap na kontrol sa kung aling mga app ang maaaring mag-notify sa kanila. Ang mga channel ng notification sa Android at mga kategorya ng notification sa iOS ay nagpapahintulot sa user na tumpak na ayusin ang mga uri ng natatanggap na notification.
Notification Permission sa Android ay isinasagawa sa pamamagitan ng pahintulot na POST_NOTIFICATIONS, na idineklara sa manifest, na may runtime na paghingi para sa Android 13+.
Para sa Android 13+ kailangan mong ideklara ang pahintulot na POST_NOTIFICATIONS sa AndroidManifest.xml. Para sa backward compatibility sa Android 12 at mas mababa, ang pahintulot ay awtomatikong ibinibigay ng system — walang karagdagang aksyon ang kinakailangan.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
Ang paghingi ng pahintulot na POST_NOTIFICATIONS ay isinasagawa sa pamamagitan ng Activity Result API. Mahalagang suriin ang bersyon ng SDK: sa Android 12 at mas mababa, hindi kinakailangan ang paghingi, ang pahintulot ay itinuturing na awtomatikong ibinigay.
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 pababa — awtomatikong ibinigay ang pahintulot
showNotification()
return
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
showNotification()
} else {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
Sa Android 8.0+, ang app ay dapat lumikha ng isang channel ng notification sa pamamagitan ng NotificationChannel bago magpadala ng unang notification. Ang channel ay may kahalagahan (importance) mula IMPORTANCE_NONE hanggang IMPORTANCE_HIGH, na tumutukoy kung ang notification ay ipapakita nang may tunog at bilang banner. Kung hindi pinagana ng user ang mga notification para sa app, ang mga bagong channel ay hindi magkakaroon ng epekto hanggang sa muling pag-enable sa mga setting. Inirerekomenda na lumikha ng magkakahiwalay na channel para sa iba’t ibang uri ng notification: mga mensahe, advertisement, mga kaganapan sa system.
private fun createNotificationChannel() {
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"Mga Mensahe",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Mga notification tungkol sa mga bagong mensahe"
enableVibration = true
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
Notification Permission sa iOS ay hinihingi sa pamamagitan ng UNUserNotificationCenter. Inirerekomenda ng Apple ang dalawang-hakbang na diskarte: una humingi ng provisional notification, pagkatapos, pagkatapos maipakita ang halaga, buong pahintulot.
Ang mga provisional notification ay mga tahimik na notification na pumapasok sa Notification Center nang walang tunog at banner. Hindi sila nangangailangan ng malinaw na pahintulot ng user at pinapayagan ang app na ipakita ang halaga ng mga notification bago ang buong paghingi. Pagkatapos makatanggap ng ilang provisional notification, maaaring i-enable ng user ang buong notification sa pamamagitan ng menu sa mismong notification.
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 — hindi nakikita ng user ang dialog
// Dumating ang mga notification nang walang tunog sa Notification Center
registerForRemoteNotifications()
}
}
Ang kasalukuyang status ng Notification Permission sa iOS ay maaaring makuha sa pamamagitan ng UNUserNotificationCenter.current().getNotificationSettings. Ang mga status na .authorized, .denied, .provisional o .notDetermined ay nagpapahintulot sa app na pumili ng tamang pag-uugali. Pagkatapos ng unang pagtanggi, ang system dialog ay hindi na muling ipinapakita — kailangan mong i-redirect ang user sa Mga Setting sa pamamagitan ng UIApplication.openSettingsURLString. Inirerekomenda rin ng Apple ang paghawak ng status na .ephemeral (iOS 17+), na nagbibigay ng pansamantalang notification para sa mga partikular na senaryo.
Pinakamahusay na kasanayan sa paghingi ng Notification Permission ay naglalayong pataasin ang rate ng conversion ng pahintulot at bawasan ang pag-alis ng user. Ang maling paghingi ay hindi lamang maaaring mag-alis sa app ng kakayahang magpadala ng mga notification, kundi pati na rin humantong sa pag-alis ng app.
Ang pinakakaraniwang anti-pattern — paghingi ng Notification Permission sa unang paglunsad ng app. Hindi pa nauunawaan ng user ang halaga ng app at malaki ang posibilidad na tumanggi. Ang pinakamainam na sandali — pagkatapos gawin ng user ang unang target na aksyon: nag-order, nagpadala ng mensahe, nag-subscribe sa mga update. Post-value prompt ay nagpapataas ng rate ng conversion ng pahintulot sa 65-75%.
Bago ang system dialog, magpakita ng sarili mong screen na may mga halimbawa ng notification na matatanggap ng user. Magpakita ng mockup ng hinaharap na notification na may text at icon. Kung makita ng user na ang mga notification ay magiging kapaki-pakinabang at hindi nakakainis, mas malamang na pumayag sila. Halimbawa ng notification sa paunang screen ay isang mabisang teknik na nagpapataas ng conversion ng 35-50%.
Ang proactive na paghingi ng Provisional Notification sa iOS ay nagpapahintulot sa paghahatid ng mga notification nang walang malinaw na pahintulot ng user. Kung makita ng user ang halaga sa mga notification na ito, maaari nilang i-enable ang buong notification sa pamamagitan ng context menu ng notification. Inirerekomenda ng Apple ang diskarteng ito para sa mga app ng balita, panahon, at iba pang serbisyo kung saan ang mga notification ay impormatibo, hindi transaksyonal. Ayon sa Apple WWDC 2024, ang diskarteng ito ay nagpapataas ng rate ng conversion ng buong pahintulot ng 20-30%.
Mga madalas itanong
Pagkatapos ng pagtanggi, ang system dialog ay hindi na muling ipinapakita. Ang tanging paraan upang i-enable ang mga notification ay i-redirect ang user sa mga setting ng system sa pamamagitan ng Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) sa Android o UIApplication.openSettingsURLString sa iOS. Magpakita ng screen na may mga tagubilin at button para sa pag-navigate.
Sa Android 12 at mas mababa, hindi kinakailangan ang Notification Permission — lahat ng app ay maaaring magpadala ng mga notification nang hindi humihingi. Gayunpaman, maaaring i-disable ng user ang mga notification anumang oras sa pamamagitan ng mga setting ng system. Simula sa Android 13, ang runtime na paghingi ay sapilitan para sa targetSdkVersion 33+.
NotificationChannel — ay isang kategorya ng notification na ipinakilala sa Android 8.0. Bawat channel ay may pangalan, paglalarawan, kahalagahan (importance), at grupo. Maaaring i-disable ng user ang mga indibidwal na channel nang hindi dinidisable ang lahat ng notification ng app. Halimbawa, ang channel na „Mga bagong mensahe” at channel na „Advertorial newsletter” ay maaaring i-configure nang magkaiba.
Sa Android 13+ nang walang POST_NOTIFICATIONS, anumang tawag sa NotificationManager.notify ay hindi papansinin ng system. Sa iOS nang walang pahintulot ng UNUserNotificationCenter, ang mga notification ay hindi naihahatid. Pagbubukod: Provisional sa iOS (walang tunog, sa Notification Center lamang) at Android 12- (hindi kinakailangan ang pahintulot).
Sa Android gamitin ang NotificationManagerCompat.areNotificationsEnabled(). Sa iOS tawagan ang UNUserNotificationCenter.current().getNotificationSettings at suriin ang property na authorizationStatus. Para sa Android, suriin din ang kahalagahan ng channel: ang NotificationChannel.getImportance() ay hindi dapat IMPORTANCE_NONE.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din