0

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

如果我们在应用程序位于用户设备的后台时这样做,那将是更好的用户体验。

我没有在谷歌和 SO 上找到任何参考。

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

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

我正在考虑以下方法:

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

  2. 如果找到新版本,服务工作者会检查应用程序是否处于活动状态/在前台。如果是,通知用户新版本,并提供更新的刷新。如果不是,则以编程方式进行重新加载,并在加载时恢复应用程序的状态。

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

4

2 回答 2

2

按照Jeff在另一个 SO 线程上的出色回答,似乎要走的路是使用Push API

完成后,如果有需求,我可能会在此处发布代码。

注意:ATM Safari 和 android webview不支持 push api。

于 2019-06-29T07:34:23.813 回答
0

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

一些考虑:

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

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

于 2019-06-26T18:34:20.967 回答