刷新后,服务工作者的更新处理程序会在Android上不断被触发

时间:2018-11-24 02:04:24

标签: android vue.js progressive-web-apps

我正在使用register-service-worker来检测PWA是否有更新。服务工作者的来源是minimal

我的处理代码如下:

if (process.env.NODE_ENV === 'production') {
  register(`${process.env.BASE_URL}service-worker.js`, {
    ready() {
      console.log(
        'App is being served from cache by a service worker',
      );
    },
    cached() {
      console.log('Content has been cached for offline use.');
    },
    updated() {
      console.log('New content is available; please refresh.');
      store.commit("updateAvailable");
    },
    offline() {
      console.log('No internet connection found. App is running in offline mode.');
    },
    error(error) {
      console.error('Error during service worker registration:', error);
    },
  });
}

store.commit("updateAvailable");显示了一个告诉用户进行刷新的模式,在该按钮上单击一次即可触发location.reload(true)。我也尝试过location.reload()

在台式机上,没有问题。在android的chrome浏览器中,即使我刷新/保持刷新,更新通知也会不断弹出。我需要将URL位置更改为另一个网站,然后返回应用程序以进行更新,并停止弹出通知。

我在自己拥有的minimal webapp中(在刷新测试分支中)添加了更新机制,以重现该问题。该问题可以通过以下方式在我的Android chrome中重现:

  • 部署应用
  • 在android chrome上运行该应用
  • 对应用程序进行最小的更改,然后重新构建
  • 在android chrome上,刷新页面

“应用已更新,刷新”警报将显示,并在每次刷新时始终显示。在台式机上不会发生此问题,刷新一次即可更新应用程序。

服务工作者是否有任何理由在移动设备/ Android上的行为有所不同?有什么我可以尝试解决的问题吗?在刷新页面之前,我已经尝试在服务工作者中调用skipWaiting()

我正在使用chrome 69.0.3497.100 / Android 7.0.0,如果有什么区别。

0 个答案:

没有答案