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

时间:2017-08-03 13:21:25

标签: android notifications android-8.0-oreo foreground-service

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

我使用不同的importance levels建立了不同的渠道,因为应用程序有一个必须一直运行的前台服务,直到我们转换到新的架构(更多面向推送),我想到将该通知放入一个重要性设置为IMPORTANCE_MIN的频道,以便它存在,但它不会打扰用户,也不会在状态栏中放置图标。

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

Android System notification for a service running in the background

如果我更改了频道并使其使用IMPORTANCE_LOW,则问题就会消失,但通知会更加突出。

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

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

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

1 个答案:

答案 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,并且必须删除该功能。