是否可以使用IMPORTANCE_MIN将前台服务通知放入通知通道中?

Ana*_*nax 12 notifications android foreground-service android-8.0-oreo

我目前正致力于将应用程序转换为Android O,目前我正致力于通知渠道.

我已经创建了具有不同重要性级别的不同通道,并且由于应用程序具有必须一直运行的前台服务,直到我们转换到新架构(更面向推送),我考虑将该通知放在具有其重要性的通道中设置为IMPORTANCE_MIN,以便它存在,但它不会打扰用户,也不会在状态栏中放置图标.

但是,当我这样做,并且我将我的应用程序放在后台(使用Home或Back按钮)时,我收到Android系统通知,告诉我我的应用程序正在后台运行,如下所示:

针对在后台运行的服务的Android系统通知

如果我改变我的频道并使其使用IMPORTANCE_LOW,问题就会消失,但是,通知更加突出.

所以,我的问题是 - 是否有可能做我正在尝试的事情?我知道系统不允许开发人员这样做,因为如果你有一个前台服务,它应该对用户可见,但这只是一个猜测,我没有找到关于这个的文档,这就是为什么我是发布这个问题.

我的第二个问题是 - 在O之前,如果您将通知的优先级设置为,您是否PRIORITY_MIN可以将该通知绑定到服务以使其成为前台服务,或者从一开始就是禁止通知?

编辑:确认Android系统显示重要频道的通知IMPORTANCE_MIN(谢谢,M66B),那么现在仍然存在的问题是什么原因?有谁知道这背后的原因,或者可以在任何地方找到任何文件?这可能是应该向跟踪器报告的错误吗?

Jos*_*osh 14

现在记录了此行为:https://developer.android.com/reference/android/app/NotificationManager.html#IMPORTANCE_MIN

最小通知重要性:仅在阴影下方显示.这不应该与Service.startForeground一起使用,因为前台服务应该是用户关心的东西,因此将其通知标记为最低重要性并不具有语义意义.如果您从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,并且必须删除该功能.