带有静默通知的前台服务

Foreground Service with a Silent Notification

上下文:

我一直在使用 Google 的 LocationUpdatesForegroundService 示例项目来进一步了解服务。

我已经通过 Github 桌面和 运行 在我的 phone 上下载了该项目,一切都很好,该项目实现了它的预期目标。

我的phone是Android8.0.0,API26

问题:

一旦应用程序终止,前台服务通知就会出现在状态栏上,一旦发生这种情况,我就会听到通知声音(默认声音)。 但是,我希望通知保持静音,就像在某些基于位置的应用程序中一样(例如:Life360

到目前为止我尝试过的:

None 以上对我有用,如果有人能对这种情况有所了解,我将不胜感激。

mChannel.setSound(null,null) 会执行此操作,但您需要 uninstall/reinstall 应用程序才能生效。或者将 CHANNEL_ID 更改为不同的值也将使用更新的设置重新创建频道。

解决方案是使用 NotificationManager.IMPORTANCE_LOW 并为其创建一个新频道。创建频道后,您无法更改重要性(好吧,您可以,但新的重要性将被忽略)。频道信息似乎由系统永久存储,并且创建的任何频道仅在您卸载应用程序时才会被删除。您可以将频道删除为

nm.deleteNotificationChannel(nChannel.getId());

并用

重新创建它
nm.createNotificationChannel(nChannel);

通过此处的堆栈溢出答案

在LocationUpdatesForegroundService 中,当服务onUnbind 时,它会调用'startForeground(NOTIFICATION_ID, getNotification())',然后Notification 会显示声音。所以你需要按照下面的代码更改 NotificationChannel

mChannel.setSound(null, null);
mChannel.setImportance(NotificationManager.IMPORTANCE_LOW);

我的回答可能有点晚了,但你有没有尝试重新安装应用程序?这很简单,可能会解决问题。