为什么Android 13移除了前台服务通知?

30

抱歉,标题有点夸张;我找不到更简洁的方式来表达它。

在Android 13中,如果用户未授予“危险”的 POST_NOTIFICATION 权限,则前台服务通知不会显示在通知抽屉中。相反,为了让用户看到它,他们必须导航到新的前台服务任务管理器,根据文档

如果用户拒绝通知权限,则仍然可以在前台服务(FGS)任务管理器中看到与这些前台服务相关的通知,但是不会在通知抽屉中看到。

我目前还没有使用过Android 13 Beta,所以我不知道当Foreground Services运行时FGS任务管理器会有多明显的提示,但我认为强制要求Foreground Services具有通知的整个意图是使用户知道应用正在运行。这甚至涉及到安全问题,因为Android使用危险权限限制后台与前台进程可以执行的操作(例如ACCESS_BACKGROUND_LOCATION)。这种变化实质上允许应用程序在没有明确通知用户的情况下使用基于前台的权限。

那么,他们为什么决定限制Foreground Service通知呢?我的意思是,对于首次添加限制通知的讨论,还有其他完整的讨论。但人们可能认为,如果Android 强制 您使用通知,则不应该有绕过它的方法(即永远不请求POST_NOTIFICATION权限,甚至只需编程删除权限)。


如果权限被拒绝,您的应用程序将无法向系统抽屉发送任何通知,但在前台服务的情况下,它们会出现在FGS任务管理器中,因为用户必须知道哪个进程/应用正在运行长时间任务并使用系统资源。根据文档,启动前台服务不需要此运行时权限,但服务必须具有通知。 - Darshan
1
谁知道发布通知是危险的...我认为这只会导致更不稳定的应用功能...但我相信Google服务将被豁免... - Mark
@DarShan 有几件事情需要注意。首先,问题的前提是 FGS 任务管理器并不真正通知用户,如此处所示(https://developer.android.com/about/versions/13/changes/fgs-manager)。它更像是一个菜单,用户可以选择查看。其次,你说“服务必须有一个通知”。虽然确实需要给 startForeground() 提供一个通知,但这个通知是否会呈现给用户(除了 FGS 任务管理器之外)? - user19309143
@free_coupons_for_sale_1023 正确,FGS将保持前台运行的应用程序列表,无论权限状态如何。 其次,根据文档,前台服务确实需要通知,但如果权限被拒绝,则不会显示通知。 - Darshan
1
@DarShan - 所以如果用户拒绝了权限,您可以从前台启动一个前台服务,并在服务中使用startForeground发布通知,并像平常一样使用该服务,除非用户拒绝此权限,唯一的后果是不显示通知?就像大多数Google的“调整”一样,最好自己测试一下.. - Mark
1
@Mark 正确,至少根据文档。 - Darshan
3个回答

9
这个变化的好处是,通知区域不会被图标填满。在正常使用时,可以看到它是这样的:here。而在详细模式下,它看起来是这样的:here
如果您想要更好的解释,请查看此处的文档。

4

来自文档

从 Android 13 (API 级别 33) 开始,默认情况下,用户可以通过滑动通知来关闭与前台服务相关联的通知。在以前的 Android 版本中,除非停止前台服务或将其从前台移除,否则无法关闭通知。

如果您希望通知无法被用户关闭,请在使用 Notification.Builder 创建通知时,将 true 传递给 setOngoing() 方法。

https://developer.android.com/guide/components/foreground-services#handle-user-initiated-stop

输入图像描述


0
那么,他们为什么决定限制前台服务通知呢?
实际上,他们根本没有限制前台服务通知。在FGS任务管理器中,它们始终可见。在Android 13以下版本中,当用户在设置中强制关闭它们时,可以隐藏前台服务通知。但是在Android 13中,不管用户是否允许通知,它总是可见的(无论是在通知面板中还是在FGS任务管理器中)。
但是人们可能会认为,如果Android强制您使用通知,则不应有任何方法可以规避它。
我认为权限是用于显示常规通知而不是前台通知的。在这种新方式下,前台服务永远不会被隐藏(始终可见于FGS任务管理器),而其他常规通知则根据用户的喜好进行展示。简而言之,此方法将常规通知和前台服务通知的可见性解耦,而不是将两者都隐藏起来。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接