我目前正致力于将应用程序转换为Android O,目前我正致力于通知渠道。
我使用不同的importance levels建立了不同的渠道,因为应用程序有一个必须一直运行的前台服务,直到我们转换到新的架构(更多面向推送),我想到将该通知放入一个重要性设置为IMPORTANCE_MIN
的频道,以便它存在,但它不会打扰用户,也不会在状态栏中放置图标。
然而,当我这样做,并且我将我的应用程序放在后台(使用Home或Back按钮)时,我收到Android系统通知,告诉我我的应用程序正在后台运行,如下所示:
如果我更改了频道并使其使用IMPORTANCE_LOW
,则问题就会消失,但通知会更加突出。
所以,我的问题是 - 是否可以做我正在尝试的事情?我知道系统不允许开发人员这样做,因为如果你有一个前台服务,它应该对用户可见,但这只是一个猜测,我没有找到关于这个的文档,那& #39;为什么我发布这个问题。
我的第二个问题是 - 在O之前,如果您将通知的优先级设置为PRIORITY_MIN
,您是否可以将该通知绑定到服务以使其成为前台服务,或者从那时起就是禁止通知总是?
修改:确认Android系统会显示重要性为IMPORTANCE_MIN
的频道的通知(谢谢,M66B),那么现在仍然存在的问题是什么原因?有谁知道这背后的原因,或者可以在任何地方找到任何文件?这可能是应该向跟踪器报告的错误吗?
答案 0 :(得分:12)
现在记录了此行为:https://developer.android.com/reference/android/app/NotificationManager.html#IMPORTANCE_MIN
最小通知重要性:仅在阴影下方显示。 这不应该与Service.startForeground一起使用,因为a 前台服务应该是用户关心的东西 将通知标记为最小值并不具有语义意义 重要性。如果您从Android版本O开始执行此操作,系统将会执行此操作 显示关于您的应用运行的优先级较高的通知 背景
还有:https://material.io/guidelines/patterns/notifications.html#notifications-settings
在Android O中,前景的频道默认重要性级别 服务通知必须至少为IMPORTANCE_LOW才能显示 状态栏中的图标。
使用不太显着的IMPORTANCE_MIN级别的频道将触发 来自Android的IMPORTANCE_LOW的额外通知,说明了 应用正在使用电池。
旁注: 这对我们来说是一个真正的痛苦,因为在O之前,当我们的前景通知没有任何有趣的信息呈现时,我们曾经在PRIORITY_DEFAULT和PRIORITY_MIN之间动态切换。通过渠道,我们无法再动态更改IMPORTANCE,并且必须删除该功能。