我正在尝试使页面移动网络应用兼容,可在iOS设备上离线使用。我已将移动Web应用程序兼容的元标记添加到文档的头部,并指定了一个cache.manifest文件,其中包含该页面的所有资源。
我可以看到cache.manifest文件正在被权威地用于加载页面资源(即在控制台中我可以看到当我第一次清除/加载清单时以及后续页面加载时保存到设备的资源我可以看到'noupdate'事件触发window.applicationCache。
尽管如此,当我在我正在测试的iOS设备上关闭WiFi(iPad第二代,运行iOS 8.3)时,我立即收到一条消息,说无法加载页面,因为无法找到服务器,此消息上的唯一选项是重试(导致相同的错误)或关闭移动Web应用程序。
即使我收到此错误,我也可以看到通知背后的页面加载,因此显然仍然从应用程序缓存中获取资源,但正如我所说,似乎在任何类型的应用程序之前都会触发“无互联网”消息缓存交互发生。
任何人都可以建议我如何抑制此“离线错误”消息,或修复cache.manifest以使其按预期工作,允许我使用保存到主屏幕的移动网络应用程序,而无需连接上网?
答案 0 :(得分:0)
注意:iOS Safari和桌面Safari不支持服务工作者技术,并且没有明确的路线图。
从现在开始于03/2016 service workers have better browser支持(Chrome,Firefox),我建议将此功能与manifest.json结合使用。
提供完整离线体验对我有用sw-precache。您可以将其设置为构建任务(Gulp,Grunt)或手动运行。因此,即使提前关闭了wifi,网络应用也会加载UI 甚至大小写。
主要部分是添加正确的静态文件掩码 - 检查writeServiceWorkerFile
函数中的 staticFileGlobs 属性,如下所示:
staticFileGlobs: [
rootDir + '/css/**.css',
rootDir + '/',
rootDir + 'index.html',
rootDir + 'index.html/#/home',
rootDir + 'index.html/#/offline',
rootDir + '/img/**.*',
rootDir + '/js/**.js',
rootDir + '/locales/**.js'
],