我正在使用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上的行为有所不同?有什么我可以尝试解决的问题吗?在刷新页面之前,我已经尝试在服务工作者中调用skipWaiting()
。
我正在使用chrome 69.0.3497.100 / Android 7.0.0,如果有什么区别。