需要明确的是,Web 应用程序正在缓存,并且在 Mobile Safari 中离线运行良好。
问题是当它被添加到运行 iOS 6.0.1 的 iPhone 4s 和 iPad 2 的主屏幕时。它无法脱机工作,并在连接到互联网时出现网络错误,即“无法打开 MYWEBAPP。MYWEBAPP 无法打开,因为它没有连接到互联网”
我已经调试了几个小时,似乎找不到解决方案。我在控制台中没有收到任何错误,我正在运行 Jonathan Stark 的调试代码
我已经在桌面 Safari、Chrome 和 Firefox 的在线/离线开发者工具中测试了该应用程序。以及带有 Safari 中设备的 Web Inspector。结果在 iPhone 或 iPad 上都是一样的。它们都将缓存 Web 应用程序并在 Mobile Safari 中运行,但在添加到主屏幕时不会。离线或在线都没有错误。
据我所知,我正在使用最佳实践:
添加了 HTML 标头:
<html manifest="photo.appcache">
我还尝试过为清单文件使用不同的名称,包括:cache.manifest 和 offline.manifest,因为我读到它会有所不同,但在我的测试中,只要扩展名是 . manifest 或 .appcache 并在 .htaccess 文件中适当地提供。
添加了正确的 MIME 类型:
AddType text/cache-manifest appcache manifest
我也试过:
AddType text/cache.manifest manifest
,,AddType text/cache.manifest .manifest manifest
AddType text/cache-manifest .manifest
我不相信这有效:
AddType text/cache.manifest
但我不记得了。在大多数情况下,这并不重要,我坚持:AddType text/cache-manifest 应用缓存清单
就像 HTML5 Mobile Boilerplate 中的内容一样。
添加:
网络: *
到 appcache 文件。我相信这允许下载所有内容以及使所有链接正常工作。
- 我试过删除这一行:
<meta name="apple-mobile-web-app-capable" content="yes">
因为我在这里阅读了 SO 解决了与我类似的问题,但我可以确认它在我的测试中不起作用。当按下主屏幕图标时删除此行或将内容设置为“否”将重定向到 Mobile Safari 而不是全屏打开。
我几乎把它缩小到它是 iOS 6 中的一个错误(我实际上使用的是 iOS 6.0.1),因为我知道现在已经为浏览器中的 Web 应用程序和添加到主屏幕的应用程序分离了数据. 我在这里发布这个问题,看看是否有其他开发人员遇到过同样的问题。