1

在我的应用程序中,我正在发布聊天通知,每当用户阅读聊天时,我都想删除通知。但是,如果用户选择打开气泡,我想保留它,直到用户手动关闭它。

当用户在气泡本身或主要活动中打开相关聊天时,我可以轻松地做到这一点,方法是重新发布通知并.setSuppressNotification(true)调用其气泡元数据。效果正是我想要的;通知消失了,气泡仍然存在,并且气泡上的徽章被清除。

问题是,用户还可以在其他地方而不是在设备上阅读聊天。在这种情况下.setSuppressNotification()可能不起作用:

如果发布气泡的应用不在前台,则此标志无效。如果应用程序可见且在屏幕上,则该应用程序被视为前台,请注意前台服务不符合条件。

有没有办法在应用程序处于后台时删除通知而不删除其气泡?


PS 其他应用程序是做什么的?

  • Telegram 似乎保留了气泡,只有在您打开气泡本身时才会删除相关通知。即使您阅读主要活动中的聊天并关闭气泡,通知也会保留。我不认为这是可以接受的;
  • 另一方面,只要您在应用程序中打开相关聊天,Signal 就会消除气泡。这对于一对一聊天来说可能是合理的,因为气泡无论如何都会重新出现在新消息上,但对于群聊,我想保留气泡;
  • 人们(示例应用程序)将在删除通知时保留气泡。但是,作为不是真正的信使,它不必处理我的特定用例。
4

2 回答 2

0

我在 Google 的跟踪器上创建了一个关于此的问题,他们将其标记为已修复,并说

我们想通知您,setSuppressNotification无论应用程序是否在前台都可以正常工作,并且此更改已在 Android S 中引入。

于 2021-09-28T17:55:23.190 回答
0

你可以试试 NotificationListenerService

  • 请求用户启用权限通知访问
  • 使用 NotificationListenerService 取消通知
  • 不要使用 NotificationService#cancel

我在这里找到了一个 Github 示例(不是我的):https ://github.com/Chagall/notification-listener-service-example 你可以按照这里的示例并实现更多代码来实现它

于 2021-09-28T03:47:22.730 回答