【发布时间】:2017-08-03 13:21:24
【问题描述】:
我目前正致力于将应用程序转换为 Android O,并且我目前正致力于通知渠道。
我使用不同的importance levels 创建了不同的通道,并且由于应用程序有一个前台服务必须一直运行,直到我们过渡到新架构(更面向推送),我考虑将通知放在通道中它的重要性设置为IMPORTANCE_MIN,因此它存在,但不会打扰用户,也不会在状态栏中放置图标。
但是,当我这样做并将我的应用程序置于后台(使用 Home 或 Back 按钮)时,我会收到一条 Android 系统通知,告诉我我的应用程序正在后台运行,如下所示:
如果我更改频道并使其使用IMPORTANCE_LOW,问题就会消失,但通知会更加突出。
所以,我的问题是 - 有没有可能做我正在尝试的事情?我知道系统不允许开发人员这样做,因为如果您有前台服务,它应该对用户可见,但这只是一个猜测,我没有找到有关此的文档,这就是为什么我发布这个问题。
我的第二个问题是 - 在 O 之前,如果您将通知的优先级设置为 PRIORITY_MIN,您是否可以将该通知绑定到服务以使其成为前台服务,或者从一开始就不能这样做?
编辑:确认Android系统显示了重要频道IMPORTANCE_MIN的通知(感谢M66B),那么现在剩下的问题是为什么?有谁知道这背后的原因,或者可以在任何地方找到任何文档?这可能是一个应该报告给跟踪器的错误吗?
【问题讨论】:
-
您的意思是,在 Android O 上,如果您仍然不针对 API 级别 26?因为,自 API 级别 26 起,优先级已被弃用,您需要改为创建具有重要性的通知通道,以便对通知进行排序。
-
嘿,是的,我就是这么说的。因此,您尝试使用 IMPORTANCE_MIN 创建一个通知通道,并发出一个通知,该通知将进入该通道,然后将其绑定到服务以使其成为前台服务,并且当您的应用程序处于后台时(您的 UI 未打开屏幕),通知位于底部的通知阴影中,您没有收到来自 Android 系统的通知,我已发布了屏幕截图?
-
@M66B 如果您尚未亲自验证解决方案(或明确声明您尚未验证),请不要发布有关解决方案的 cmets。此外,请始终确保您已仔细阅读问题。请参阅:stackoverflow.com/help/how-to-answer 这里的问题是关于以 API 26 为目标的 Android O,在接下来的几个月中,越来越多的人会遇到这个问题。
-
@Anax 请注意,您需要卸载应用程序才能重新创建具有不同属性的通知通道。
-
就我对“为什么?”的猜测而言,用户非常大声地表达了他们的观点,他们讨厌在他们背后跑来跑去的东西。例如,在 Android 4.x 时间范围内,Android 中存在一个错误,其中
startForeground()与有缺陷的Notification(例如,没有图标)会导致前景重要性但没有Notification。 Android 4.4(?)将行为更改为“修复”这样一个损坏的Notification,因此用户会知道前台服务。用户随后抱怨开发人员提供此类服务,而不是因为混乱状态栏。
标签: android notifications android-8.0-oreo foreground-service