iOS 12不支持某些PWA的脱机功能

iOS 12不支持某些PWA的脱机功能,ios,safari,service-worker,progressive-web-apps,Ios,Safari,Service Worker,Progressive Web Apps,iOS 12 Safari不支持某些PWA(渐进式Web应用)的脱机功能。Safari似乎无法在这些web应用程序中正确缓存资源 例如,以下PWA在iOS 12和12.1中无法脱机工作,但它们在Android或Windows上的Chrome中都能完美工作: 谷歌用来演示服务人员的Air Horner PWA: 这两个: 复制步骤(100%可复制): 使用Safari(iOS 12或12.1)访问PWA 关闭Safari中的PWA选项卡 按iPhone上的home(主页)按钮将Safari设

iOS 12 Safari不支持某些PWA(渐进式Web应用)的脱机功能。Safari似乎无法在这些web应用程序中正确缓存资源

例如,以下PWA在iOS 12和12.1中无法脱机工作,但它们在Android或Windows上的Chrome中都能完美工作:

谷歌用来演示服务人员的Air Horner PWA:

这两个:

复制步骤(100%可复制):

  • 使用Safari(iOS 12或12.1)访问PWA
  • 关闭Safari中的PWA选项卡
  • 按iPhone上的home(主页)按钮将Safari设置为背景
  • 按下iPhone电源按钮关闭屏幕
  • 再次按下iPhone电源按钮以唤醒手机
  • 关闭iPhone控制中心的所有网络连接(wifi和手机网络)
  • 打开Safari,再次访问PWA-->web应用无法加载

  • 这一直困扰着我很长一段时间,因为我自己的网络应用也有类似的问题——在Android/Windows上的Chrome上运行良好,但在iOS 12 Safari上却失败了。知道iOS 12 Safari有什么特别之处吗?多谢各位

    我也遇到了同样的问题,在没有Workbox的情况下使用service worker解决了这个问题-应用程序在没有internet连接的情况下启动,但缓存出现了问题-它不工作。

    我遇到了完全相同的问题


    我意识到的是,当服务工作者被激活时,所有缓存都被正确设置,但是如果您使用iOS任务管理器关闭safari(不仅仅是减少它),那么当返回PWA时,所有缓存的文件都会被完全删除。

    事实上,脱机工作在主屏幕上。但是,缓存不会在新版本上更新&主屏幕链接停止工作。要刷新缓存,必须从Safari访问web应用,然后它才能再次工作。这实际上是次优的&有望得到修复

    我的iPhone 6S上的iOS 12.1.2解决了这个问题。

    我的应用程序也不使用Workbox。仍然不起作用。问题是,例如,很少有离线应用程序能正常工作,而且很奇怪。我会关注JSFIDLE上的关键代码。就拿它为例。其服务工作者脚本如下(足够简单):。如果我按照上面问题中的步骤列表操作,应用程序将不会脱机加载。而且它不使用Workbox。我重复了这个场景,最终得到了相同的结果。我已经就这个问题发表了评论。奇怪的是,当你将它添加到主屏幕,运行它,然后关闭互联网连接,你仍然可以将它作为独立的应用程序使用-我认为webview将webapp视为普通的缓存网站。这就是为什么只有从您的访问下载的资产/文件,没有应由服务人员下载的资产/文件-您可以脱机测试。