针对选择加入式通知的通知权限

Android 13 中的通知使用选择加入模式,这与之前 Android 版本中使用的选择退出模式不同。在 Android 13 中,所有应用都必须先征得用户许可,然后才能发送通知提示。此模式有助于减少通知中断、最大限度地减少信息过载,并帮助用户根据对自己重要的内容来控制显示的通知。为了支持选择加入模式,OEM 必须在通知和运行时权限系统中进行更改。

本页介绍了 OEM 必须实施哪些更改才能支持此项更改,以及如何验证实施情况。

实施针对选择加入式通知的更改

从 Android 13 开始,应用必须先从系统请求 android.permission.POST_NOTIFICATION 运行时权限,以声明其发送通知的意图,然后才能发送通知。

在 Android 13 及更高版本中,决定应用是否可以向用户发送通知的设置存储在权限系统中。在 Android 13 之前,此设置存储在通知系统中。因此,OEM 必须将有关应用是否被允许发送通知的现有通知数据从通知系统迁移到运行时权限系统。OEM 还必须维护通知系统中的现有 API,这些 API 将该数据呈现给应用开发者。

通知和权限系统的更改基于 用户通知行为的选择加入模式,并在实施指南部分中进行了介绍。

选择加入模式下用户通知的行为

下表说明了在运行 Android 13 的设备上,各种应用版本的通知行为

搭载 Android 13 的设备 以 Android 13 或更高版本为目标平台的应用 以低于 Android 13 的版本为目标平台的应用
全新安装 通知被阻止,直到应用提示。

应用控制何时请求权限。

通知被阻止,直到操作系统提示。

在应用首次运行时请求权限。

现有应用(升级) 通知被允许,直到应用提示。

授予临时权限,直到应用在首次符合条件运行时请求权限。

通知被允许,直到操作系统提示。

授予临时权限,直到应用首次运行。

实施指南

如需参考实现,请参阅通知服务权限服务政策服务。要为默认权限处理程序实现例外情况,请参阅运行时权限

在实施过程中,对于以 Android 13 或更低版本 SDK 为目标平台的应用,请使用以下关于用户通知行为的指南

  • 在 Android 13 设备上全新安装的应用在用户批准权限提示之前,不得发送通知。
    • 如果应用以 Android 13 及更高版本为目标平台,则通知必须被阻止,直到应用提示,因为应用控制何时以及是否请求用户权限。
    • 如果应用以低于 Android 13 的版本为目标平台,则通知必须被阻止,直到操作系统提示。操作系统必须在应用首次运行时显示权限提示。
  • 在升级到 Android 13 之前设备上已存在的任何应用,或通过备份和恢复还原的任何应用,都必须允许发送通知,直到用户首次从该应用启动 Activity。

    • 对于以 Android 13 及更高版本的 SDK 为目标平台的应用,如果用户之前未在应用或 NotificationChannel 级别自定义此应用的通知设置,则撤消临时权限授予。应用必须先请求用户权限,然后才能继续发送通知。

      如果以 Android 13 为目标平台的升级应用当前未通过临时升级授予获得通知权限,并且用户至少启动过一次该应用,则该应用必须显示通知权限提示,然后才能运行任何进一步的前台服务。

    • 对于目标 SDK 版本低于 Android 13 的应用,在应用创建至少一个 NotificationChannel 后首次启动 Activity 时拦截,以显示权限提示,询问用户是否想要接收来自该应用的通知。

      如果用户之前在升级设备上的应用或 NotificationChannel 级别自定义了通知设置,或者在恢复到设备的备份中自定义了通知设置,则应用级别设置必须使用 FLAG_PERMISSION_USER_SET 标志迁移到权限系统中。除非应用明确要求,否则不得向用户显示进一步的通知权限提示。

  • 备份和恢复必须在 Android 13 设备和早期操作系统版本的设备之间实现向前和向后兼容。从 Android 13 设备生成的备份数据必须能够恢复到早期操作系统版本,而从早期操作系统版本生成的备份数据必须能够恢复到 Android 13 设备。

  • 与正在进行的媒体播放相关的媒体通知必须免除通知权限。

验证对通知和权限系统的更改

要验证实现,请运行以下测试