【问题标题】:Silent notifications in foreground services前台服务中的静默通知
【发布时间】:2018-03-22 01:23:24
【问题描述】:

我有多个应用程序可以协同工作以完成相同的工作,它们都属于同一个开发人员。每个应用程序在后台运行一个长时间运行的服务,并不断处理用户的输入。问题是这些服务不能长时间在后台运行,因为Android系统会杀死它们。所以我想使用前台服务而不是后台服务来防止系统杀死它们。但是,我不想在通知抽屉中使用多个不同的通知来惹恼用户。

我发现在 Android O 中创建通知而不分配通道会让系统在不显示通知的情况下启动前台服务。类似于以下内容:

Notification.Builder builder = new Notification.Builder(context);
builder.setContentTitle(......);
builder.setTicker(......);
builder.setContentText(......);
builder.setSmallIcon(......);
builder.setLargeIcon(......);
Notification notification = builder.build();
startForeground(111, notification);

所以我正在考虑通过从一个应用程序创建一个带有通道的通知来显示一个通知,并为其他应用程序创建一个没有通道的通知,如前所述。在这种情况下,用户将看到我的所有应用程序的一个通知。

该解决方案对我很有效。但我想知道这是否是前台服务中通知的意外使用。我担心谷歌会因为这样做而暂停我的应用程序!

你们知道实施该解决方案是否可以吗? 或者有什么方法可以将通知堆叠在一个组中,即使它们是不同的应用程序?

我的目标只是让通知对用户来说不那么烦人。 另外,我知道 JobScheduler 和 JobIntentService 解决方案。但在我的情况下,他们不做这项工作,因为我想保持服务运行。不像做一项工作就停止服务...

【问题讨论】:

    标签: android service notifications


    【解决方案1】:

    您可以使用IMPORTANCE_LOW (https://developer.android.com/training/notify-user/channels#importance) 创建通知渠道。 不应该有声音。

    或者您也可以使用setOnlyAlertOnce() (https://developer.android.com/training/notify-user/build-notification#Updating),声音只会出现一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      相关资源
      最近更新 更多