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

时间:2019-06-26 05:56:15

标签: service-worker progressive-web-apps service-worker-events

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

如果应用在用户设备的后台运行,这样做会带来更好的用户体验。

在Google和SO上我没有找到任何引用。

有没有这样的例子?如果我要制造一个,有人会觉得有用吗?

我感到惊讶的是,这不是事实上的方法,但是也许我在这里遗漏了一些东西……

我正在考虑以下方法:

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

  2. 如果找到新版本,服务人员将检查该应用程序是否处于活动状态/在前台。如果是,请通知用户新版本,并提供更新更新。如果没有,请以编程方式进行重新加载,并在加载时恢复应用程序的状态。

如果有人知道这样做的更好方法,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

紧随Jeff's answer on another SO thread之后,Push API似乎是解决之道。

如果有需要,我可能会在完成后将代码发布在这里。

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

答案 1 :(得分:0)

这是不可能的。您无法在Service Worker中实施在后台进行的更新检查。原因:防止滥用并节省电池。

一些注意事项:

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

最后一点意味着您无法使服务器与应用程序的软件联系,并且让服务器默默地执行某些操作,而无需向用户显示通知。