Разрешение на уведомления во время работы
Запрашивайте разрешение на уведомления в Android 13 и новее
«Разрешение на уведомления во время работы» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Разрешение на уведомления
Начиная с Android 13 (API 33), приложения должны запрашивать разрешение времени выполнения для публикации уведомлений: POST_NOTIFICATIONS. Без него уведомления будут незаметно заблокированы.
Зачем оно было добавлено
До Android 13 уведомления были включены по умолчанию, и пользователям приходилось искать в настройках способ отключить надоедливые приложения. Разрешение времени выполнения меняет это: теперь пользователи явно соглашаются на уведомления, что уменьшает количество спама.
Объявление в манифесте
Сначала объявите разрешение в AndroidManifest.xml. Это требуется для каждой поддерживаемой версии, хотя запрос появляется только начиная с API 33.
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />Это опасное разрешение
POST_NOTIFICATIONS классифицируется как разрешение времени выполнения (опасное разрешение), поэтому на Android 13+ необходимо запросить его у пользователя и обработать его ответ, как в случае с доступом к камере или геопозиции.
Поведение в разных версиях
Различия между версиями имеют значение:
- API 33+: необходимо запросить разрешение во время выполнения; после отказа уведомления не показываются
- API 32 и ниже: уведомления разрешены по умолчанию; запрос не требуется
Проверка перед запросом
Запрашивайте разрешение только на Android 13 и более новых версиях и только если оно ещё не предоставлено. Защитите вызов проверкой версии.
val needsRequest = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
ContextCompat.checkSelfPermission(
context, Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTEDЗапрос в Compose
Используйте тот же Activity Result API, который Вы изучили для других разрешений: средство запуска с контрактом RequestPermission, запускаемое с параметром POST_NOTIFICATIONS.
val launcher = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
// update UI based on whether notifications are allowed
}Запуск запроса
Запускайте запрос только на API 33 и более новых версиях, желательно после действия пользователя, которому помогают уведомления, а не сразу при запуске приложения.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
launcher.launch(Manifest.permission.POST_NOTIFICATIONS)
}Запрос в подходящий момент
Как и для всех разрешений, запрашивайте его в подходящем контексте. Например, попросите разрешение после того, как пользователь включит функцию напоминаний, и объясните пользу, вместо того чтобы делать это сразу после открытия приложения.
Корректная обработка отказа
Если пользователь отказал, приложение не должно переставать работать. Отключите переключатели, зависящие от уведомлений, или покажите подсказку о том, что уведомления отключены, со ссылкой на системные настройки, если пользователь захочет включить их позже.
Целевой SDK включает проверку
Требование времени выполнения применяется, когда приложение нацелено на API 33+. Если старое приложение работает на Android 13, система может автоматически показать запрос при первой публикации уведомления, но всё равно следует запрашивать разрешение явно.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли разрешение времени выполнения для уведомлений.
Итоги
Вы обработали разрешение на уведомления:
- Для Android 13+ требуется разрешение времени выполнения
POST_NOTIFICATIONS - Объявите его в манифесте и запросите с помощью Activity Result API
- Защитите запросы проверкой версии и запрашивайте разрешение в подходящем контексте
- Корректно обрабатывайте отказ
Вы завершили курс по уведомлениям.
Часто задаваемые вопросы
Урок «Разрешение на уведомления во время работы» бесплатный?
Да — полный текст урока «Разрешение на уведомления во время работы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Разрешение на уведомления во время работы»?
Запрашивайте разрешение на уведомления в Android 13 и новее Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Разрешение на уведомления во время работы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Каналы уведомлений
- Создание уведомления
- Действия и глубокие ссылки
- Разрешение на уведомления во время работы