【发布时间】:2018-07-20 05:00:32
【问题描述】:
我将 PWA 和 service worker 添加到我现有的基于 Angular 5 的 Web 应用程序中。第一次发布时一切看起来都很好。但是,当我尝试发布更新时,发生了一些奇怪的事情。
在使用 Chrome 的 PC 上,我没有问题。每次发布后,我都会收到提醒,要求我更新新版本,这很棒。
但是,iOS 上缺少此警报,这可能没问题,因为据我了解,iOS 尚不支持自动更新。如果我在 iOS 上使用 Chrome,我可以在手动刷新后获取新版本(有时需要刷新几次)。但是,Safari 浏览器通常不会显示新版本。如果我不断刷新页面,新版本最终会出现,但在我关闭并重新打开后它会再次下降。在我玩游戏时,获得新版本的唯一方法是先手动清除 Safari 缓存。这是普通用户无法接受的。
我了解 iOS 对 PWA 的支持有限,但这是否是我们在 iOS 上所能获得的最大支持?如果没有自动更新,iOS 用户如何知道新版本并进行更新呢?
【问题讨论】:
-
我通过为每次更新使用新文件名并在新版本可用时取消并重新注册服务工作者来解决此问题。检查来自服务器的值后手动调用该函数。也没有找到其他解决方案,很高兴为 safari 提供更清洁的解决方案。
-
@AgashThamo。我有同样的问题,但不确定你的意思是 un 和从应用程序中重新注册服务人员,你介意分享一个代码示例吗?谢谢!
-
@Stephen 抱歉,我无权访问任何显示此内容的具体代码。但我的意思是,您的服务人员可以检查您的 ngsw.json 中是否有新文件,如果有新文件但您的文件仍然是旧文件,您可以销毁 SW developer.mozilla.org/en-US/docs/Web/API/… 基本上删除所有缓存并填充并注册一个新的服务人员。它对我有用,但我认为这个问题无论如何都可以用新的 angular 版本 6 解决(Chrome 有一些类似的问题)。
-
@Stephen 我刚刚注意到,Safari 上的 iOS 尚不支持 unregister() 函数。我得看看我是怎么做到的,希望我能在我的回购中找到一个例子。
-
您使用了
webp图像文件吗?这使我无法在 iOS 中看到新的更新。
标签: ios safari service-worker pwa