Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Разрешение на уведомления для отказа в уведомлениях
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Уведомления в Android 13 используют модель opt-in, которая является изменением по сравнению с предыдущими версиями Android, которые использовали модель opt-out. В Android 13 все приложения должны запрашивать у пользователей разрешение перед отправкой уведомлений. Эта модель помогает сократить прерывания уведомлений, минимизировать информационную перегрузку и помогает пользователям контролировать, какие уведомления появляются, исходя из того, что для них важно. Для поддержки модели opt-in OEM-производители должны внедрить изменения в системы уведомлений и разрешений времени выполнения.
На этой странице описывается, что OEM-производители должны реализовать для поддержки этого изменения, а также как проверить реализацию.
Внедрить изменения для уведомлений о подписке
Начиная с Android 13, приложения должны заявлять о своем намерении отправлять уведомления, запрашивая у системы разрешение среды выполнения android.permission.POST_NOTIFICATION
, прежде чем они смогут отправлять уведомления.
В Android 13 и выше настройка, определяющая, может ли приложение отправлять уведомления пользователю, хранится в системе разрешений. До Android 13 эта настройка хранилась в системе уведомлений. Следовательно, OEM-производители должны перенести существующие данные уведомлений о том, разрешено ли приложению отправлять уведомления, из системы уведомлений в систему разрешений времени выполнения. OEM-производители также должны поддерживать существующие API в системе уведомлений, которые предоставляют эти данные разработчикам приложений.
Изменения в системах уведомлений и разрешений основаны на модели добровольного уведомления пользователей и описаны в разделе «Руководящие принципы внедрения» .
Поведение пользовательских уведомлений в модели подписки
В следующей таблице показано поведение уведомлений для различных версий приложения на устройстве под управлением Android 13:
Устройство на Android 13 | Приложения для Android 13 и выше | Приложения, ориентированные на версии ниже Android 13 |
---|
Новая установка | Уведомления блокируются до тех пор, пока приложение не попросит об этом. Приложения контролируют, когда запрашивать разрешение. | Уведомления блокируются до тех пор, пока ОС не потребует этого. При первом запуске приложения запрашивается разрешение. |
Существующее приложение (обновление) | Уведомления разрешены до тех пор, пока приложение не потребует их. Временное разрешение предоставляется до тех пор, пока приложение не запросит его при первом квалификационном заезде. | Уведомления разрешены до тех пор, пока ОС не потребует их. Временное разрешение предоставляется до первого запуска приложения. |
Руководство по внедрению
Для справочной реализации см. службу уведомлений , службу разрешений и службу политик . Для реализации исключений для обработчиков разрешений по умолчанию см. Разрешения времени выполнения .
Во время внедрения используйте следующие рекомендации по поведению уведомлений пользователя для приложений, ориентированных на Android 13 или более ранние версии SDK:
- Недавно установленные приложения на устройстве Android 13 не должны отправлять уведомления без одобрения пользователем запроса на разрешение.
- Если приложение предназначено для версий Android 13 и выше, уведомления должны быть заблокированы до тех пор, пока приложение не попросит об этом, поскольку приложение контролирует, когда и следует ли запрашивать разрешение пользователя.
- Если приложение предназначено для версий ниже Android 13, уведомления должны быть заблокированы до тех пор, пока ОС не попросит об этом. ОС должна отобразить запрос на разрешение при первом запуске приложения.
Любое приложение, существовавшее на устройстве до обновления до Android 13, или любое приложение, восстановленное с помощью резервного копирования и восстановления, должно иметь разрешение на отправку уведомлений до тех пор, пока пользователь впервые не запустит действие из этого приложения.
Для приложений, ориентированных на SDK версий Android 13 и выше, если пользователь ранее не настроил параметры уведомлений для этого приложения на уровне приложения или NotificationChannel
, отмените временное разрешение. Затем приложения должны запросить у пользователя разрешение, прежде чем им будет разрешено продолжать отправлять уведомления.
Если обновленное приложение, предназначенное для Android 13, в настоящее время не имеет разрешения на уведомления через временный грант на обновление, и пользователь запустил его хотя бы один раз, приложение должно отобразить запрос на разрешение на уведомления, прежде чем ему будет разрешено запускать какие-либо дополнительные службы переднего плана.
Для приложений с целевым SDK версий ниже Android 13 перехватывайте первый запуск активности после того, как приложение создало хотя бы один NotificationChannel
, чтобы отобразить запрос на разрешение, спрашивающий, хочет ли пользователь получать уведомления от приложения.
Если пользователь ранее настраивал параметры уведомлений на уровне приложения или NotificationChannel
для приложения на обновляемом устройстве или в резервной копии, восстанавливаемой на устройстве, параметр уровня приложения должен быть перенесен в систему разрешений с флагом FLAG_PERMISSION_USER_SET
. Никакие дополнительные запросы на разрешение уведомлений не должны отображаться пользователю, если приложение специально не попросит об этом.
Резервное копирование и восстановление должны быть совместимы как в прямом, так и в обратном направлении между устройством Android 13 и устройством с более ранней версией ОС. Резервные данные, созданные с устройства Android 13, должны восстанавливаться на более ранней версии ОС, а резервные данные с более ранней версии ОС должны восстанавливаться на устройстве Android 13.
Уведомления о мультимедиа, связанные с текущим воспроизведением мультимедиа, должны быть исключены из разрешения на уведомления.
Проверить изменения в системах уведомлений и разрешений
Для проверки реализации выполните следующие тесты:
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Notification permission for opt-in notifications\n\nNotifications in Android 13 use an opt-in model, which\nis a change from previous Android versions, which use an opt-out model. In\nAndroid 13, all apps must ask users for permission before\nsending notification prompts. This model helps reduce notification\ninterruptions, minimizes information overload, and helps users control what\nnotifications appear based on what's important to them. To support the\nopt-in model, OEMs must implement changes in the notification and runtime\npermission systems.\n\nThis page describes what OEMs must implement to support this change and how\nto validate the implementation.\n\nImplement changes for opt-in notifications\n------------------------------------------\n\nStarting with Android 13, apps must declare their\nintent to send notifications by requesting the\n[`android.permission.POST_NOTIFICATION`](https://developer.android.com/about/versions/13/changes/notification-permission)\nruntime permission from the system before they can send notifications.\n\nIn Android 13 and higher, the setting that determines\nif an app can send notifications to the user is stored in the permission system.\nPrior to Android 13, this setting was stored in the\nnotification system. Hence, OEMs must migrate the existing notification data\nabout whether an app is allowed to send notifications, from the notification\nsystem into the runtime permission system. OEMs must also maintain existing APIs\nin the notification system that surface that data to app developers.\n\nChanges to the notification and permission systems are based on the\n[opt-in model of user notification behavior](#behavior-optin) and are\ndescribed in the [Guidelines for implementation](#guidelines-impl) section.\n\n### Behavior of user notifications in an opt-in model\n\nThe following table illustrates the notification behavior for various app\nversions on a device running Android 13:\n\n| Device on Android 13 | Apps targeting Android 13 or higher | Apps targeting versions lower than Android 13 |\n|------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| New install | Notifications are blocked until prompted by the app. Apps control when to ask for permission. | Notifications are blocked until prompted by the OS. Permission is asked on the first run of the app. |\n| Existing app (upgrade) | Notifications are allowed until prompted by the app. Temporary permission is granted until the app asks on the first qualifying run. | Notifications are allowed until prompted by the OS. Temporary permission is granted until the first run of the app. |\n\n### Guidelines for implementation\n\nFor reference implementation, refer to\n[notification service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/notification/),\n[permission service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/pm/permission/) and\n[policy service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/policy). To implement exceptions\nfor default permission handlers see\n[Runtime Permissions](/docs/core/permissions/runtime_perms#integration).\n\nDuring implementation, use the following guidelines on user notification\nbehavior for apps targeting Android 13 or lower SDKs:\n\n- Freshly installed apps on an Android 13 device must not send a notification without the user approving a permission prompt.\n - If the app targets versions Android 13 and higher, notifications must be blocked until prompted by the app as the app controls when and if to ask for user permission.\n - If the app targets versions lower than Android 13, notifications must be blocked until prompted by the OS. The OS must show the permission prompt on the first run of the app.\n- Any app that existed on the device prior to an upgrade to\n Android 13, or any app that was restored through backup\n and restore, must be allowed to send notifications until the first time the user\n launches an activity from that app.\n\n - For apps that target SDK of versions Android 13\n and higher, if the user hasn't previously customized notification settings for\n this app at the app or `NotificationChannel` level, revoke the temporary\n permission grant. Apps must then ask the user for permission before being\n allowed to continue to send notifications.\n\n If an upgraded app targeting Android 13 doesn't\n currently have the notification permission through the temporary upgrade\n grant, and the user has launched it at least once, the app must show a\n notification permission prompt before it's allowed to run any further foreground\n services.\n - For apps that have a target SDK of versions lower than\n Android 13,\n [intercept](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/wm/ActivityInterceptorCallback.java)\n the first activity launch after the app has created at least one `NotificationChannel`\n to show a permission prompt asking if the user wants to receive notifications\n from the app.\n\n If a user previously customized notification settings at the\n app or `NotificationChannel` level for an app on the upgrading device or in a\n backup being restored to the device, the app level setting must be migrated into\n the permission system with the `FLAG_PERMISSION_USER_SET` flag. No further\n notification permission prompt must be shown to the user unless the app\n specifically asks it to be.\n- Backup and restore must be backward and forward compatible between an\n Android 13 device and a device from an earlier OS\n version. Backup data generated from an Android 13\n device must restore onto an earlier OS version, and backup data from an earlier\n OS version must restore onto an Android 13 device.\n\n- Media notifications associated with ongoing media playback must be exempt\n from the notification permission.\n\nValidate changes to the notification and permission systems\n-----------------------------------------------------------\n\nTo validate the implementation, run the following tests:\n\n- Unit tests as specified in [`PreferencesHelperTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java),\n [`NotificationManagerServiceTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java).\n\n- Any manual test that tests upgrades and backup and restore.\n\n- Any CTS Permission and Notification system test that sends notifications.\n Some of these tests are located in [cts/tests/tests/permission/](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Permission/tests/cts/permission/src/android/permission/cts/),\n [NotificationManagerTest.java](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notification/src/android/app/notification/current/cts/NotificationManagerTest.java?q=NotificationManagerTest.java),\n and [cts/tests/tests/notificationlegacy/](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notificationlegacy/)."]]