我一直在尝试在没有用户交互的情况下获取和更新服务工作者。我能够缓存页面,但只有在刷新时,我才能获取更新构建,这需要用户交互。关于如何做到这一点的任何帮助。
框架选择: Angular2,sw-precache(库)
这是我在顶层的脚本
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
console.log('Service Worker registered');
}).catch(function(err) {
console.log('Service Worker registration failed: ', err);
});
}
</script>发布于 2018-02-14 02:34:11
每次在web服务器上托管的服务工作者文件中检测到更改时,sw-precache都会更新缓存。This Stack Overflow answer详细介绍了检查新服务工作者文件的频率,但基本思想是,检查通常发生在用户采取操作导航到您的服务工作者作用域下的新URL之后。
虽然有用于“定期后台同步”的proposals,允许你专门请求浏览器“在后台”检查更新,但没有任何用户交互,这还没有在任何地方实现。有一些关于电池寿命和电池资源使用的问题需要首先解决。
可以使用push notifications在没有用户交互的情况下“唤醒”服务工作者,并且当服务工作者通过push事件开始运行时,它还将检查更新。您应该显示一个可见的通知来响应push事件,因此,虽然您可以在没有用户交互的情况下触发一个通知,但您最终仍然需要通过通知告诉用户已发出刷新请求。
https://stackoverflow.com/questions/48711200
复制相似问题