Ping service worker 不显示通知

Posted

技术标签:

【中文标题】Ping service worker 不显示通知【英文标题】:Ping service worker without displaying a notification 【发布时间】:2019-07-12 01:30:22 【问题描述】:

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

This site has been updated in the background 

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

这是有道理的。谢谢

以上是关于Ping service worker 不显示通知的主要内容,如果未能解决你的问题,请参考以下文章

Javascript Service Worker 通知超时

推送通知中的 Service Worker 跟踪

service-worker 可以停止 GCM api 发送的推送通知吗?

重新加载页面后,Service Worker 显示为已删除

与 Angular.js 控制器通信 service-worker

Service Worker 和 AJAX