Ping service worker 不显示通知

Ping service worker without displaying a notification

我正在尝试监视哪些服务工作者处于活动状态(即哪些用户打开了浏览器)。我想出了一个解决方案,它通过网络推送 API 发送一个简单的 ping,这将触发 service worker 向我的服务器发送一个 ping 请求。但我发现如果我不向用户显示通知,我会收到来自 Chrome 的警报。

This site has been updated in the background 

是我做错了什么,还是有其他方法可以解决这个问题?

不,你没有做错任何事。这是设计使然。

无法使用 Web 推送 API 在后台联系 Service Worker 并且系统 不告诉用户 。您正在描述一个被动跟踪系统,即使用户没有使用该产品,您也可以跟踪用户,并且受到软件设计的限制。当您使用 Web Push 时,您应该显示您自己的通知(API 用于通知),如果您不这样做,这就是浏览器所做的。

我知道如果能够从服务器联系 SW 并让它 运行 一些小差事,那将是非常好的,但不幸的是,这也可能导致一些恶作剧。你也不能,例如。保持打开 WebSocket(在 SW 中不可用)或在将来安排任务以使其 ping(不保证 运行)。