服务人员在应用程序处于后台时更新

service worker update while app is in background

我们正在使用工作箱。如果用户打开已安装的 PWA 并且有可用的新版本,我们将以编程方式刷新页面。

如果我们在应用程序在用户设备的后台运行时执行此操作,用户体验会更好。

我在 google 和 SO 上没有找到任何相关的参考资料。

有这方面的例子吗?如果我会做一个,有人会觉得它有用吗?

我很惊讶这不是这些天的实际方法,但也许我在这里遗漏了一些东西......

我正在考虑以下方法:

  1. Service worker 正在从服务器轮询以检查是否有新版本可用(或通过 WebSocket 连接)

  2. 如果找到新版本,Service Worker 会检查该应用程序是否 active/in 在前台。如果是,请通知用户有关新版本的信息,并提供刷新更新。如果没有,以编程方式进行重新加载,并在加载时恢复应用程序的状态。

如果有人对此有更好的方法,我将不胜感激。

这是不可能的。您无法在 Service Worker 的后台执行更新检查。原因:防止滥用和节省电量。

一些注意事项:

  • SWs 中不存在 WebSockets
  • SW在后台被杀死,无法与setTimeout/setInterval
  • 保持联系
  • 无法静默接收来自服务器的推送消息

最后一点意味着您不能让服务器联系应用程序的软件并让它静静地做一些事情而不向用户显示通知。

正在关注 Jeff's great , seems like the way to go is with the Push API

如果有需求,我可能会 post 将代码放在这里。

注意:ATM Safari and android webview 不支持推送 api。