Notification Permission: какво е, видове известия и принцип на работа

Автор: IT Sectr Публикувано: 2026-05-22 Време за четене: 8 мин

Notification Permission — това е разрешението, от което приложението се нуждае, за да изпраща push известия и локални известия до потребителя. Започвайки от Android 13 и iOS 12, приложенията са задължени да искат това разрешение по време на изпълнение чрез системен диалог. Според Android Developers, 2024, без изричното съгласие на потребителя, приложението не може да показва известия на устройства с Android 13 и по-нови.

Основни неща

  • Notification Permission — разрешение по време на изпълнение за изпращане на известия, задължително на Android 13+ и iOS 12+.
  • Android 13 въведе разрешението POST_NOTIFICATIONS, което трябва да се иска по време на изпълнение чрез Activity Result API.
  • iOS използва UNUserNotificationCenter.requestAuthorization за искане на достъп до локални и push известия.
  • Отказ на разрешението води до това, че приложението не може да показва нито локални, нито push известия.
  • Повторно искане не е възможно след първия отказ — трябва да пренасочите потребителя към системните настройки.

Какво е Notification Permission?

Notification Permission — това е системно разрешение, което регулира способността на приложението да изпраща известия до потребителя. До Android 13 всички приложения можеха да показват известия без искане — достатъчно беше да декларират разрешението в манифеста. Но с нарастването на спама и натрапчивите известия, Google въведе задължително искане по време на изпълнение, подобно на iOS.

На iOS разрешението за известия беше задължително от iOS 8, а от iOS 12 нататък се появиха временни (provisional) известия — тихи известия, които се доставят без звук и се показват в Центъра за известия без изрично искане. Временните известия позволяват на разработчика да покаже на потребителя стойността на известията, преди да поиска пълно разрешение.

Според Localytics (2024), 61% от потребителите на iOS и 55% от потребителите на Android се съгласяват да получават push известия след искане. Степента на конверсия на съгласие зависи пряко от контекста на искането: приложенията, които искат разрешение след първото ценно взаимодействие, получават 40% повече съгласия от тези, които искат при първото стартиране.

Еволюция на разрешенията за известия

Еволюция на разрешенията за известия показва как платформите постепенно ограничаваха достъпа на приложенията до този комуникационен канал. Разбирането на тази еволюция помага на разработчика да обработва правилно различните версии на операционната система.

Android: от свободен достъп до строг контрол

До Android 13 (2022) всяко приложение можеше да показва известия без съгласието на потребителя. Android 8.0 (2017) въведе канали за известия, Android 12 (2021) добави автоматично блокиране на натрапчиви известия, и накрая Android 13 задължи искането на POST_NOTIFICATIONS по време на изпълнение. За приложения с targetSdkVersion под 33, системата автоматично предоставя разрешение, но Google Play изисква актуализиране на targetSdkVersion до 33+ от август 2023 г.

iOS: постепенно засилване на контрола

iOS 8 (2014) въведе задължително искане на разрешение чрез UIUserNotificationSettings. iOS 10 (2016) представи UNUserNotificationCenter с поддръжка на богати известия. iOS 12 (2018) добави временни известия и групирани известия. iOS 15 (2021) въведе Focus Mode, който може да блокира известия независимо от разрешението на приложението. Прозрачност на проследяване на приложения (iOS 14.5) не е свързана с известията, но също повлия на общата култура на искания за разрешения.

Текущо състояние

В момента и двете платформи изискват искане на Notification Permission по време на изпълнение. Разработчикът вече не може да разчита на автоматичното включване на известия. Потребителят има пълен контрол над това кои приложения могат да го уведомяват. Каналите за известия на Android и категориите известия на iOS позволяват на потребителя да настрои точно типовете получавани известия.

Notification Permission на Android

Notification Permission на Android се осъществява чрез разрешението POST_NOTIFICATIONS, декларирано в манифеста, с искане по време на изпълнение за Android 13+.

Декларация в манифеста

За Android 13+ трябва да декларирате разрешението POST_NOTIFICATIONS в AndroidManifest.xml. За обратна съвместимост с Android 12 и по-ниски версии, разрешението се предоставя автоматично от системата — не са необходими допълнителни действия.

xml
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Искане по време на изпълнение в Kotlin

Искането на разрешението POST_NOTIFICATIONS се изпълнява чрез Activity Result API. Важно е да проверите версията на SDK: на Android 12 и по-ниски версии не се изисква искане, разрешението се счита за автоматично предоставено.

kotlin
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 и по-долу — разрешението се предоставя автоматично
        showNotification()
        return
    }
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
        showNotification()
    } else {
        notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
    }
}

Създаване на канали за известия

На Android 8.0+ приложението трябва да създаде канал за известия чрез NotificationChannel преди изпращането на първото известие. Каналът има важност (importance) от IMPORTANCE_NONE до IMPORTANCE_HIGH, която определя дали известието ще се показва със звук и като банер. Ако потребителят е деактивирал известията за приложението, новите канали няма да имат ефект до повторното им включване в настройките. Препоръчва се създаването на отделни канали за различни типове известия: съобщения, реклами, системни събития.

kotlin
private fun createNotificationChannel() {
    val channel = NotificationChannel(
        CHANNEL_ID_MESSAGES,
        "Съобщения",
        NotificationManager.IMPORTANCE_HIGH
    ).apply {
        description = "Известия за нови съобщения"
        enableVibration = true
    }
    val manager = getSystemService(NotificationManager::class.java)
    manager.createNotificationChannel(channel)
}

Notification Permission на iOS

Notification Permission на iOS се иска чрез UNUserNotificationCenter. Apple препоръчва двуетапен подход: първо поискайте временни известия, след това, след демонстриране на стойността, пълно разрешение.

Искане в Swift с временна опция

Временните известия са тихи известия, които пристигат в Центъра за известия без звук и банер. Те не изискват изричното съгласие на потребителя и позволяват на приложението да покаже стойността на известията преди пълното искане. След получаване на няколко временни известия, потребителят може да включи пълните известия чрез менюто в самото известие.

swift
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 — потребителят не вижда диалога
        // Известията идват без звук в Центъра за известия
        registerForRemoteNotifications()
    }
}

Проверка на статуса и системни настройки

Текущият статус на Notification Permission на iOS може да се получи чрез UNUserNotificationCenter.current().getNotificationSettings. Статусите .authorized, .denied, .provisional или .notDetermined позволяват на приложението да избере правилното поведение. След първия отказ системният диалог не се показва отново — трябва да пренасочите потребителя към Настройки чрез UIApplication.openSettingsURLString. Apple също препоръчва обработка на статуса .ephemeral (iOS 17+), който предоставя временни известия за определени сценарии.

Най-добри практики за искане на известия

Най-добрите практики за искане на Notification Permission имат за цел увеличаване на степента на конверсия на съгласие и намаляване на загубата на потребители. Неправилното искане може не само да лиши приложението от възможността да изпраща известия, но и да доведе до премахване на приложението.

Не искайте при първото стартиране

Най-честият анти-модел — искане на Notification Permission при първото стартиране на приложението. Потребителят все още не разбира стойността на приложението и с голяма вероятност ще откаже. Оптималният момент — след като потребителят извърши първото целево действие: направи поръчка, изпрати съобщение, абонира се за актуализации. Искането след стойност повишава степента на конверсия на съгласие до 65-75%.

Използвайте екран преди разрешение

Преди системния диалог покажете свой собствен екран с примери на известия, които потребителят ще получава. Покажете макет на бъдещото известие с текст и икона. Ако потребителят види, че известията ще бъдат полезни и ненатрапчиви, има по-голяма вероятност да се съгласи. Примерът за известие на предварителния екран е ефективна техника, която повишава конверсията с 35-50%.

Използвайте временни известия на iOS

Проактивното искане на временни известия на iOS позволява доставяне на известия без изричното съгласие на потребителя. Ако потребителят види стойност в тези известия, той може да включи пълните известия чрез контекстното меню на известието. Apple препоръчва този подход за новинарски приложения, време и други услуги, където известията са информативни, а не транзакционни. Според Apple WWDC 2024, този подход повишава степента на конверсия на пълно съгласие с 20-30%.

Често задавани въпроси

Какво да правя, ако потребителят отказа Notification Permission?

След отказа системният диалог не се показва отново. Единственият начин да включите известията е да пренасочите потребителя към системните настройки чрез Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) на Android или UIApplication.openSettingsURLString на iOS. Покажете екран с инструкции и бутон за навигация.

Как работи Notification Permission на Android 12 и по-ниски версии?

На Android 12 и по-ниски версии Notification Permission не е необходимо — всички приложения могат да изпращат известия без искане. Въпреки това, потребителят може да деактивира известията по всяко време чрез системните настройки. Започвайки от Android 13, искането по време на изпълнение е задължително за targetSdkVersion 33+.

Какво представляват каналите за известия на Android?

NotificationChannel — категория известия, въведена в Android 8.0. Всеки канал има име, описание, важност (importance) и група. Потребителят може да деактивира отделни канали, без да деактивира всички известия на приложението. Например, каналът „Нови съобщения” и каналът „Рекламен бюлетин” могат да бъдат конфигурирани различно.

Мога ли да изпращам известия без Notification Permission?

На Android 13+ без POST_NOTIFICATIONS всяко извикване на NotificationManager.notify ще бъде игнорирано от системата. На iOS без разрешение на UNUserNotificationCenter известията не се доставят. Изключение: Provisional на iOS (без звук, само в Центъра за известия) и Android 12- (не се изисква разрешение).

Как да проверя дали известията са включени за приложението?

На Android използвайте NotificationManagerCompat.areNotificationsEnabled(). На iOS извикайте UNUserNotificationCenter.current().getNotificationSettings и проверете свойството authorizationStatus. За Android допълнително проверете важността на канала: NotificationChannel.getImportance() не трябва да бъде IMPORTANCE_NONE.

Резюме

  • Notification Permission — задължително разрешение по време на изпълнение за изпращане на известия на Android 13+ и iOS 12+.
  • Android 13 въведе POST_NOTIFICATIONS с искане по време на изпълнение, за Android 12 и по-ниски разрешението е автоматично.
  • iOS използва UNUserNotificationCenter с поддръжка на временни известия за тихо доставяне без съгласие.
  • Искане след стойност — искане след първото ценно действие на потребителя повишава степента на конверсия на съгласие до 75%.
  • Екран преди разрешение с пример за известие повишава конверсията с 35-50% според индустриални проучвания.
  • Временните известия на iOS позволяват демонстриране на стойността на известията преди искане на пълно разрешение.
  • Каналите за известия на Android предоставят на потребителя детайлен контрол върху типовете получавани известия.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също