Android 13(api 33)Beta版本权限更新要点。

1,858 阅读7分钟

为媒体文件访问提供更细化的权限

e4625b26bf4bae88bd437bd3adceea54.png 图 1.  媒体文件访问权限的权限授权提示框

用户授予该权限后,应用将拥有对相应媒体文件类型的读取权限。为简化用户体验,如果应用同时请求 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO 权限,系统会只显示一个对话框来授予这些权限。如果您的应用需要访问共享媒体文件,请在应用以 Android 13 为目标平台时迁移至这些新权限。

前台服务 (FGS) 任务管理器

无论应用采用何种目标 SDK 版本,Android 13 都允许用户从抽屉式通知栏中停止前台服务。这项新功能称为 FGS 任务管理器,它会显示当前正在运行前台服务的应用列表。此列表的标签为使用中的应用。每个应用旁边都有一个停止按钮。图 1 说明了搭载 Android 13 的设备上的 FGS 任务管理器的工作流程。

image.png 图 2.  搭载 Android 13 的设备上的 FGS 任务管理器工作流程。

注意:当用户按您应用旁边的停止按钮时,系统会停止您的整个应用,而不仅仅是正在运行的前台服务。

通知的运行时权限

Android 13 中引入了新的运行时权限,用于从应用发送非豁免通知:POST_NOTIFICATIONS。此更改有助于用户专注于最重要的通知。

强烈建议您尽快以 Android 13 为目标平台,以获享此功能提供的额外控制和灵活性。如果您继续以 12L(API 级别 32)或更低版本为目标平台,您将失去在应用功能环境中请求权限的机会。

使用新权限

如需向应用请求新的通知权限,请将应用更新为以 Android 13 为目标平台,并完成与请求其他运行时权限类似的流程,如以下几个部分所述。

需要在应用的清单文件中声明的权限会显示在以下代码段中:

<manifest ...>
     <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> 
    <application ...>
        ...
    </application>
</manifest>

应用功能取决于用户在权限对话框中所做的选择

在此对话框中,用户可执行以下操作:

注意:如果用户点按不允许,即使仅点按一次,系统也不会再次提示用户,除非他们卸载并重新安装您的应用。 下面几个部分介绍了根据用户操作的不同,应用会有哪些不同的行为表现。

用户选择“允许”

如果用户选择允许选项,您的应用可以执行以下操作:

用户选择“不允许”

如果用户选择不允许选项,您的应用将无法发送通知。除了几个特定角色之外,所有通知渠道都会被屏蔽。这类似于用户在系统设置中手动关闭应用的所有通知后发生的行为。

用户滑开对话框

如果用户滑开对话框(即他们既没有选择允许,也没有选择不允许),会发生以下行为:

对新安装的应用的影响

如果用户在搭载 Android 13 的设备上安装您的应用,应用的通知默认处于关闭状态。在您请求新的权限且用户向您的应用授予该权限之前,您的应用都将无法发送通知。

权限对话框的显示时间取决于应用的目标 SDK 版本:

  • 如果您的应用以 Android 13 或更高版本为目标平台,应用将可以完全自行控制权限对话框的显示时间。您可以借此机会向用户说明应用需要此权限的原因,进而鼓励他们授予该权限。
  • 如果您的应用以 12L(API 级别 32)或更低版本为目标平台,系统会在您创建第一个通知渠道时显示权限对话框。这通常是在应用启动时。

对现有应用更新的影响

注意:请考虑下面这种情形,即应用安装在搭载 12L 或更低版本的旧设备上,用户在该设备上允许接收通知,但想淘汰该设备。用户现在使用的是搭载 Android 13 的新设备,并通过备份和恢复功能恢复了应用。

在这种情况下,系统会将您的应用视为“现有应用”,因此该应用会获得发送通知的临时权限。

为最大限度地减少与新通知权限相关的中断,系统会自动向系统升级到 Android 13 之前用户设备上已安装的所有符合条件的应用临时授予新通知权限。此临时授权的持续时间取决于应用的目标 SDK 版本:

  • 如果应用以 Android 13 或更高版本为目标平台,则临时授权将持续到应用首次启动 activity 为止。

    您的应用可以完全自行控制权限对话框的显示时间。您可以借此机会向用户说明应用需要此权限的原因,进而鼓励他们授予该权限。

  • 如果您的应用以 12L 或更低版本为目标平台,则临时授权将一直有效,直到用户在通知权限运行时对话框中明确选择一个选项。也就是说,如果用户在未做出选择的情况下关闭了权限提示,系统会保留应用的临时授权。

获得临时授权的资格要求

您的应用要**获得临时授权必须满足以下条件:应用必须已具有通知渠道,并且用户未在搭载 12L 或更低版本的设备上明确停用应用的通知。

如果用户在搭载 12L 或更低版本的设备上停用了应用的通知,当设备升级到 Android 13 或更高版本后,该停用会继续有效。

豁免

媒体会话有关的通知不受此行为变更的影响。

最佳做法

本部分将介绍几种在应用中最有效地使用新通知权限的方式。

更新应用的目标 SDK 版本

为了让应用更灵活地显示权限对话框,请将应用更新为以 Android 13 为目标平台。

等待一段时间再显示通知权限提示

等到用户熟悉您的应用之后,再请求他们授予任何权限。

新用户可能想要探索您的应用,并切身体会每项通知请求可以带来的好处。您可以通过用户操作触发权限提示。下面列举了几个适合显示通知权限提示的时机:

  • 用户点按“提醒铃铛”按钮时。
  • 用户选择关注他人的社交媒体帐号时。
  • 用户提交外卖订单时。

图 1 显示了请求通知权限的建议工作流程。或者,您也可以设置一个请求以在应用启动时显示,但仅在应用第 3 次或第 4 次启动后才显示。

用户登录后,系统会向用户显示获取行程更新通知的邀请。当用户按“I'm in”按钮后,应用会请求新权限,这时会显示系统对话框

图 3.  针对请求通知权限建议的用户驱动工作流程

在上下文中请求权限

在应用内请求通知权限时,请在正确的上下文中请求,以便用户明确了解通知的用途以及应该选择接收通知的原因。例如,电子邮件应用可能包含为每封新邮件发送通知的选项,或仅为用户是唯一收件人的邮件发送通知的选项。

借此机会明确向用户表明您的意图,有助于鼓励用户向您的应用授予通知权限。

检查您的应用能否发送通知

用户必须为您的应用启用通知,您的应用才能发送通知。要确认用户是否已启用通知,请调用 areNotificationsEnabled()

以负责任的方式使用权限

获得发送通知的许可后,请负责任地使用该权限。用户可以查看您的应用每天发送的通知数量,并且可以随时撤消该权限