В Android 13 уведомления используют модель с возможностью выбора (opt-in), что отличается от предыдущих версий Android, где использовалась модель с возможностью отказа (opt-out). В Android 13 все приложения должны запрашивать у пользователей разрешение перед отправкой уведомлений. Эта модель помогает уменьшить количество прерываний, связанных с уведомлениями, минимизировать информационную перегрузку и позволяет пользователям контролировать, какие уведомления отображаются, в зависимости от того, что для них важно. Для поддержки модели с возможностью выбора производители должны внести изменения в системы уведомлений и разрешений во время выполнения.
На этой странице описано, что производители оригинального оборудования (OEM) должны внедрить для поддержки этого изменения и как проверить правильность его реализации.
Внести изменения в систему уведомлений, на которые пользователь дал согласие.
Начиная с Android 13, приложения должны заявить о своем намерении отправлять уведомления, запросив у системы разрешение android.permission.POST_NOTIFICATION , прежде чем они смогут отправлять уведомления.
В Android 13 и более поздних версиях параметр, определяющий, может ли приложение отправлять уведомления пользователю, хранится в системе разрешений. До Android 13 этот параметр хранился в системе уведомлений. Следовательно, производителям оборудования необходимо перенести существующие данные об уведомлениях, касающиеся разрешения приложению отправлять уведомления, из системы уведомлений в систему разрешений во время выполнения. Производителям оборудования также необходимо поддерживать существующие API в системе уведомлений, которые предоставляют эти данные разработчикам приложений.
Изменения в системах уведомлений и разрешений основаны на модели добровольного согласия пользователя на получение уведомлений и описаны в разделе «Руководство по внедрению» .
Поведение пользователей при получении уведомлений в модели с добровольным согласием.
В следующей таблице показано поведение уведомлений для различных версий приложений на устройстве под управлением Android 13:
| Устройство на Android 13 | Приложения, предназначенные для Android 13 и выше. | Приложения, предназначенные для версий Android ниже 13. |
|---|---|---|
| Новая установка | Уведомления блокируются до тех пор, пока приложение не запросит их отправку. Приложения сами определяют, когда запрашивать разрешение. | Уведомления блокируются до тех пор, пока операционная система не запросит их. При первом запуске приложения запрашивается разрешение. |
| Существующее приложение (обновление) | Уведомления разрешены до тех пор, пока приложение не запросит их отправку. Временное разрешение предоставляется до тех пор, пока приложение не запросит его во время первого квалификационного заезда. | Уведомления разрешены до тех пор, пока операционная система не запросит их. Временное разрешение предоставляется до первого запуска приложения. |
Руководящие принципы внедрения
Примеры реализации см. в документации по службам уведомлений , разрешений и политик . Для реализации исключений для обработчиков разрешений по умолчанию см. раздел «Разрешения во время выполнения» .
При внедрении используйте следующие рекомендации по поведению уведомлений для пользователей в приложениях, ориентированных на SDK Android 13 или более ранних версий:
- Приложения, только что установленные на устройстве 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.
Уведомления о воспроизведении медиафайлов, связанные с текущим воспроизведением, не подлежат разрешению на отправку уведомлений.
Проверьте изменения в системах уведомлений и разрешений.
Для проверки правильности реализации выполните следующие тесты:
Модульные тесты, как указано в
PreferencesHelperTestиNotificationManagerServiceTest.Любой ручной тест, проверяющий обновления, резервное копирование и восстановление.
Любые тесты системы разрешений и уведомлений CTS, отправляющие уведомления. Некоторые из этих тестов находятся в папках cts/tests/tests/permission/ , NotificationManagerTest.java и cts/tests/tests/notificationlegacy/ .