打开 PWA 时收到推送事件时不显示通知

Not showing notifications when receiving a push event when the PWA is opened

这是一个关于在 Pogressive Web Apps 中处理推送通知的最佳实践问题。

我目前正在开发一个包含聊天功能的网络应用程序。我添加了推送通知,这样用户每次收到新的聊天消息时都会收到通知(通过 NotificationsAPI)。这很好用。但是,即使用户打开聊天 window 也会收到大量推送通知,这并不是一个好的用户体验。因此,如果用户打开了应用程序,我根本不想显示通知。

我知道不通知用户传入推送是一个关键主题,例如Chrome 要我指定 userVisibleOnly 标志。这是不显示通知的有效例外,还是您认为每次收到推送时我真的需要显示通知?如果是这样,我该如何处理我的问题?有人知道其他应用如何解决这个问题吗?

补充:我可能在Chromiums发布的一份文档中找到了答案: https://docs.google.com/document/d/13VxFdLJbMwxHrvnpDm8RXnU41W2ZlcP0mdWWe9zXQT8/edit#

"每次 service worker 处理完一条推送消息,但当前没有来自该源的通知是可见的,并且该源上没有打开和可见的页面,我们检查是否从该来源收到的过去 10 条推送消息中的任何一条也没有在显示时留下通知(并且没有来自该来源的页面打开和可见)。如果是这种情况,那么我们代表网站显示通知所以他们的用户可以理解它 运行.

[...]

*:(除了是同源的,它必须来自相同的浏览器配置文件;但是它不需要成功加载,即错误页面计数,只要 omnibox正在显示正确的域)。"

据我了解,允许在同一设备上打开应用程序时不显示通知。