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 notifications) — тихі сповіщення, які доставляються без звуку та відображаються в Центрі сповіщень без явного запиту. Тимчасові сповіщення дозволяють розробнику показати користувачу цінність сповіщень до того, як запитувати повний дозвіл.

За даними 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) ввів режим фокусування, який може блокувати сповіщення незалежно від дозволу додатку. App Tracking Transparency (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
        // Тимчасовий — користувач не бачить діалог
        // Сповіщення надходять без звуку в Центрі сповіщень
        registerForRemoteNotifications()
    }
}

Перевірка статусу та системні налаштування

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

Найкращі практики запиту сповіщень

Найкращі практики запиту Notification Permission спрямовані на підвищення конверсії схвалення та зниження відтоку користувачів. Неправильний запит може не тільки позбавити додаток можливості надсилати сповіщення, але й призвести до видалення додатку.

Не запитуйте при першому запуску

Найпоширеніший антипатерн — запит Notification Permission при першому запуску додатку. Користувач ще не розуміє цінності додатку і з високою ймовірністю відмовить. Оптимальний момент — після того, як користувач здійснив першу цільову дію: оформив замовлення, надіслав повідомлення, підписався на оновлення. Post-value prompt підвищує конверсію схвалення до 65-75%.

Використовуйте pre-permission screen

Перед системним діалогом покажіть власний екран із прикладами сповіщень, які отримуватиме користувач. Покажіть макет майбутнього сповіщення з текстом та іконкою. Якщо користувач бачить, що сповіщення будуть корисними та ненав’язливими, він з більшою ймовірністю погодиться. Приклад сповіщення на попередньому екрані — ефективний прийом, що підвищує конверсію на 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 із підтримкою тимчасових сповіщень для тихої доставки без згоди.
  • Post-value prompt — запит після першої цінної дії користувача підвищує конверсію схвалення до 75%.
  • Pre-permission screen із прикладом сповіщення підвищує конверсію на 35-50% за даними галузевих досліджень.
  • Тимчасові сповіщення на iOS дозволяють продемонструвати цінність сповіщень до запиту повного дозволу.
  • Канали сповіщень на Android дають користувачу гранулярний контроль над типами отримуваних сповіщень.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також