我最近使用工作箱将网站变成了PWA,并添加到了我在Android设备上的主屏幕上。但是,当我更新网站时,PWA不会在android上更新。
下面是代码manifest.json代码:
{"short_name":"SSPNG","name":"Security Shields PNG Limited","icons":[{"src":"/assets/img/fb-pro-pic0.png","type":"image/png","sizes":"512x512"},{"src":"/assets/img/fb-pro-pic0.png","type":"image/png","sizes":"512x512"}],"start_url":"/index.html","background_color":"#fff","theme_color":"#fff","display":"standalone","orientation":"portrait"}
这是服务人员的注册码:
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(registration => {
console.log('Service Worker registered! ?');
})
.catch(err => {
console.log('Registration failed ? ', err);
});
});
}
</script>
我正在寻找一种解决方案,用户无需手动清除浏览器应用程序存储中的缓存,并且PWA会自动更新。我想我使用了缓存后备方法,并且正在寻找一种替代方法,以强制更新现有PWA中的缓存。
答案 0 :(得分:0)
恐怕你把两件事混为一谈了:
manifest.json
仅包含对图标文件、 start_url
和 scope
的引用。service-worker.js
应包含带有路径的数组,指向您的 PWA 的 HTML、CSS、JavaScript 和其他资产文件。此外,service-worker.js
还应为 PWA 安装、激活/删除和获取事件定义事件侦听器/处理程序。最后,最终触发 PWA 自动更新的是explained here。