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 — тихие уведомления, которые доставляются без звука и отображаются в Notification Center без явного запроса. 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 с поддержкой rich notifications. iOS 12 (2018) добавила provisional notifications и grouped notifications. iOS 15 (2021) ввела Focus Mode, который может блокировать уведомления независимо от разрешения приложения. App Tracking Transparency (iOS 14.5) не связан с уведомлениями, но также повлиял на общую культуру запросов разрешений.

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

На текущий момент обе платформы требуют рантайм-запроса Notification Permission. Разработчик больше не может полагаться на автоматическое включение уведомлений. Пользователь полностью контролирует, какие приложения могут его оповещать. Notification channels на 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 рекомендует двухэтапный подход: сначала запросить provisional notifications, затем, после демонстрации ценности, полноценное разрешение.

Запрос на Swift с provisional option

Provisional notifications — это тихие уведомления, которые попадают в Notification Center без звука и баннера. Они не требуют явного согласия пользователя и позволяют приложению показать ценность уведомлений до полноценного запроса. После получения нескольких provisional-уведомлений пользователь может включить полноценные уведомления через меню в самом уведомлении.

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 — пользователь не видит диалог
        // Уведомления приходят без звука в Notification Center
        registerForRemoteNotifications()
    }
}

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

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

Лучшие практики запроса уведомлений

Лучшие практики запроса Notification Permission направлены на повышение конверсии одобрения и снижение оттока пользователей. Неправильный запрос может не только лишить приложение возможности отправлять уведомления, но и привести к удалению приложения.

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

Самый распространённый антипаттерн — запрос Notification Permission при первом запуске приложения. Пользователь ещё не понимает ценность приложения и с высокой вероятностью откажет. Оптимальный момент — после того как пользователь совершил первое целевое действие: оформил заказ, отправил сообщение, подписался на обновления. Post-value prompt повышает конверсию одобрения до 65-75%.

Используйте pre-permission screen

Перед системным диалогом покажите собственный экран с примерами уведомлений, которые будет получать пользователь. Покажите макет будущего уведомления с текстом и иконкой. Если пользователь видит, что уведомления будут полезными и ненавязчивыми, он с большей вероятностью согласится. Пример уведомления на предварительном экране — эффективный приём, повышающий конверсию на 35-50%.

Используйте provisional notifications на iOS

Проактивный запрос Provisional Notifications на 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 (без звука, только в Notification Center) и 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 с поддержкой provisional notifications для тихой доставки без согласия.
  • Post-value prompt — запрос после первого ценного действия пользователя повышает конверсию одобрения до 75%.
  • Pre-permission screen с примером уведомления повышает конверсию на 35-50% по данным отраслевых исследований.
  • Provisional notifications на iOS позволяют продемонстрировать ценность уведомлений до запроса полного разрешения.
  • Notification channels на Android дают пользователю гранулярный контроль над типами получаемых уведомлений.

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

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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