Notification Permission — bu, tətbiqin istifadəçiyə push bildirişləri və lokal bildirişlər göndərməsi üçün tələb olunan icazədir. Android 13 və iOS 12-dən başlayaraq, tətbiqlər bu icazəni sistem dialoqu vasitəsilə icra zamanı tələb etməlidir. Android Developers, 2024-məlumatlarına görə, istifadəçinin açıq razılığı olmadan tətbiq Android 13 və daha yüksək cihazlarda bildirişləri göstərə bilməz.
Əsas məqamlar
Notification Permission — bu, tətbiqin istifadəçiyə bildirişlər göndərmə qabiliyyətini tənzimləyən sistem icazəsidir. Android 13-ə qədər bütün tətbiqlər sorğu olmadan bildirişləri göstərə bilirdi — icazəni manifestdə bəyan etmək kifayət idi. Lakin spam və narahatedici bildirişlərin artması ilə Google iOS-da olduğu kimi məcburi icra zamanı sorğunu tətbiq etdi.
iOS-da bildiriş icazəsi iOS 8-dən məcburi idi və iOS 12-dən başlayaraq provisional bildirişlər meydana çıxdı — səssiz çatdırılan və açıq sorğu olmadan Bildiriş Mərkəzində göstərilən bildirişlər. Provisional bildirişlər proqramçıya tam icazə tələb etməzdən əvvəl istifadəçiyə bildirişlərin dəyərini göstərməyə imkan verir.
Localytics (2024) məlumatlarına görə, iOS istifadəçilərinin 61%-i və Android istifadəçilərinin 55%-i sorğudan sonra push bildirişlərini qəbul edir. Razılıq konversiyası birbaşa sorğun kontekstindən asılıdır: ilk dəyərli qarşılıqlı əlaqədən sonra icazə tələb edən tətbiqlər ilk açılışda tələb edənlərdən 40% daha çox razılıq alır.
Bildiriş icazələrinin təkamülü platformaların tətbiqlərin bu rabitə kanalına girişini mərhələli şəkildə necə məhdudlaşdırdığını göstərir. Bu təkamülü başa düşmək proqramçıya OS müxtəlif versiyalarını düzgün idarə etməkə kömək edir.
Android 13-ə qədər (2022) hər hansı tətbiq istifadəçinin razılığı olmadan bildirişlər göstərə bilirdi. Android 8.0 (2017) bildiriş kanallarını təqdim etdi, Android 12 (2021) narahatedici bildirişlərin avtomatik bloklanmasını əlavə etdi və nəhayət Android 13 icra zamanı POST_NOTIFICATIONS tələb etməyi məcburi etdi. targetSdkVersion 33-dən aşağı olan tətbiqlər üçün sistem avtomatik olaraq icazə verir, lakin Google Play 2023-cü ilin avqustundan etibarən targetSdkVersion-un 33+ yenilənməsini tələb edir.
iOS 8 (2014) UIUserNotificationSettings vasitəsilə məcburi icazə sorğunu təqdim etdi. iOS 10 (2016) zəngin bildirişlər dəstəyi ilə UNUserNotificationCenter-i təqdim etdi. iOS 12 (2018) provisional bildirişlər və qruplaşdırılmış bildirişlər əlavə etdi. iOS 15 (2021) tətbiq icazəsindən asılı olmayaraq bildirişləri bloklaya bilən Focus Mode təqdim etdi. App Tracking Transparency (iOS 14.5) bildirişlərlə əlaqəli deyil, lakin icazə sorğu mədəniyyətinə də təsir etdi.
Hal-hazırda hər iki platforma Notification Permission-ın icra zamanı tələb edilməsini tələb edir. Proqramçı artıq bildirişlərin avtomatik qoşulmasına güvənə bilməz. İstifadəçi hansı tətbiqlərin onu xəbərdar edə biləcəyinə tam nəzarət edir. Android-də Notification channels və iOS-da bildiriş kateqoriyaları istifadəçiyə alınan bildiriş növlərini incə sazlaşdırmağa imkan verir.
Android-də Notification Permission manifestdə bəyan edilmiş POST_NOTIFICATIONS icazəsi vasitəsilə həyata keçirilir və Android 13+ üçün icra zamanı sorğu ilə tamamlanır.
Android 13+ üçün AndroidManifest.xml-də POST_NOTIFICATIONS icazəsini bəyan etmək lazımdır. Android 12 və aşağı ilə geriyə uyğumluq üçün icazə sistem tərəfindən avtomatik verilir — əlavə tədbirlər tələb olunmur.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
POST_NOTIFICATIONS icazəsi sorğu Activity Result API vasitəsilə həyata keçirilir. SDK versiyasını yoxlamaq vacibdir: Android 12 və aşağında sorğu tələb olunmur, icazə avtomatik verilmiş hesab olunur.
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 və aşağı — icazə avtomatik verilir
showNotification()
return
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
showNotification()
} else {
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
Android 8.0+-da tətbiq ilk bildirişi göndərməzdən əvvəl NotificationChannel vasitəsilə bildiriş kanalı yaratmalıdır. Kanalın əhəmiyyəti (importance) IMPORTANCE_NONE-dən IMPORTANCE_HIGH-dək dəyişir və bildirişin səslə və banner şəklində göstəriləcəyini müəyyən edir. İstifadəçi tətbiq üçün bildirişləri söndürmüşsə, yeni kanallar parametrlərdə yenidən qoşulana qədər təsirli olmayacaq. Müxtəlif bildiriş növləri üçün ayrı kanallar yaratmaq tövsiyə olunur: mesajlar, reklam, sistem hadisələri.
private fun createNotificationChannel() {
val channel = NotificationChannel(
CHANNEL_ID_MESSAGES,
"Mesajlar",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Yeni mesajlar haqqında bildirişlər"
enableVibration = true
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
iOS-da Notification Permission UNUserNotificationCenter vasitəsilə tələb edilir. Apple iki mərhələli yanaşma tövsiyə edir: əvvəlcə provisional bildirişləri tələb edin, sonra dəyəri nümayiş etdirdikdən sonra tam icazə.
Provisional bildirişlər — səs və banner olmadan Bildiriş Mərkəzinə daxil olan səssiz bildirişlərdir. Onlar istifadəçinin açıq razılığını tələb etmir və tətbiqə tam sorğudan əvvəl bildirişlərin dəyərini göstərməyə imkan verir. Bir neçə provisional bildiriş aldıqdan sonra istifadəçi bildirişin özündəki menyu vasitəsilə tam bildirişləri qoşa bilər.
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 — istifadəçi dialoqu görmür
// Bildirişlər səssiz Bildiriş Mərkəzinə gəlir
registerForRemoteNotifications()
}
}
iOS-da Notification Permission-ın cari statusunu UNUserNotificationCenter.current().getNotificationSettings vasitəsilə əldə etmək olar. Status .authorized, .denied, .provisional və ya .notDetermined tətbiqə düzgün davranışı seçməyə imkan verir. İlk rədd edilmədən sonra sistem dialoqu təkrarlanmır — istifadəçini UIApplication.openSettingsURLString vasitəsilə Parametrlərə yönləndirmək lazımdır. Apple həmçinin müəyyən ssenarilər üçün müvəqqəti bildirişlər təmin edən .ephemeral (iOS 17+) statusunun idarə edilməsini tövsiyə edir.
Ən yaxşı təcrübələr Notification Permission sorğunun razılıq konversiyasını artırmaq və istifadəçi itkisini azaltmaq məqsədi daşıyır. Yanlış sorğu yalnız tətbiqi bildiriş göndərmə qabiliyyətindən məhrum etməklə qalmaya bilər, həm də tətbiqin silinməsinə səbəb ola bilər.
Ən geniş yayılmış anti-nümunə — ilk açılışda Notification Permission tələb etməkdir. İstifadəçi hələ tətbiqin dəyərini başa düşmür və yüksək ehtimalla rədd edəcək. Optimal an — istifadəçi ilk hədəf hərəkəti etdikdən sonra: sifariş verdi, mesaj göndərdi, yeniləmələrə abunə oldu. Post-value prompt razılıq konversiyasını 65-75%-ə qədər artırır.
Sistem dialoqundan əvvəl istifadəçinin alacağı bildirişlərin nümunələri ilə öz ekranınızı göstərin. Mətn və ikona ilə gələcək bildirişin maketini göstərin. İstifadəçi bildirişlərin faydalı və narahatedici olmayacağını görərsə, razılaşma ehtimalı daha yüksəkdir. Bildiriş nümunəsi əvvəlcədən göstərilən ekranda konversiyanı 35-50% artıran effektiv bir üsuldur.
iOS-da Provisional Bildirişlərin proaktiv sorğu istifadəçinin açıq razılığı olmadan bildirişləri çatdırmağa imkan verir. İstifadəçi bu bildirişlərdə dəyər görərsə, bildirişin kontekst menyusu vasitəsilə tam bildirişləri qoşa bilər. Apple tövsiyə edir bu yanaşmanı xəbər tətbiqləri, hava proqnozu və bildirişlərin informativ olduğu, lakin əməliyyat tələb etmədiyi digər xidmətlər üçün. Apple WWDC 2024 məlumatlarına görə, bu yanaşma tam razılıq konversiyasını 20-30% artırır.
Tez-tez verilən suallar
Rədd edilmədən sonra sistem dialoqu təkrarlanmır. Bildirişləri yandırmağın yeganə yolu istifadəçini sistem parametrlərinə yönləndirməkdir: Android-də Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) və ya iOS-da UIApplication.openSettingsURLString. Təlimat və keçid düyməsi ilə ekran göstərin.
Android 12 və aşağında Notification Permission tələb olunmur — bütün tətbiqlər sorğu olmadan bildirişlər göndərə bilər. Lakin istifadəçi istənən vaxt sistem parametrləri vasitəsilə bildirişləri söndürə bilər. Android 13-dən başlayaraq, targetSdkVersion 33+ üçün icra zamanı sorğu məcburidir.
NotificationChannel — Android 8.0-da təqdim edilmiş bildiriş kateqoriyasıdır. Hər bir kanalın adı, təsviri, əhəmiyyəti (importance) və qrupu var. İstifadəçi bütün tətbiq bildirişlərini söndürmədən ayrı-ayrı kanalları söndürə bilər. Məsələn, „Yeni mesajlar” kanalı və „Reklam göndərişləri” kanalı fərqli şəkildə konfiqurasiya edilə bilər.
Android 13+ POST_NOTIFICATIONS olmadan NotificationManager.notify-ə hər hansı zəng sistem tərəfindən görməzlikdən gəlinəcək. iOS-da UNUserNotificationCenter icazəsi olmadan bildirişlər çatdırılmır. İstisna: iOS-da Provisional (səssiz, yalnız Bildiriş Mərkəzində) və Android 12- (icazə tələb olunmur).
Android-də NotificationManagerCompat.areNotificationsEnabled() istifadə edin. iOS-da UNUserNotificationCenter.current().getNotificationSettings çağırın və authorizationStatus xassəsini yoxlayın. Android üçün əlavə olaraq kanalın əhəmiyyətini yoxlayın: NotificationChannel.getImportance() IMPORTANCE_NONE olmamalıdır.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun