【发布时间】:2012-10-29 10:39:23
【问题描述】:
需要明确的是,网络应用正在缓存,并且在 Mobile Safari 中离线运行良好。
问题是当它被添加到运行 iOS 6.0.1 的 iPhone 4s 和 iPad 2 的主屏幕时。它无法离线工作,并在连接到互联网时出现网络错误,即“无法打开 MYWEBAPP。MYWEBAPP 无法打开,因为它没有连接到互联网”
我已经调试了几个小时,但似乎找不到解决方案。我在控制台中没有收到任何错误,我正在运行 Jonathan Stark 的 debugging code
我已经在桌面版 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 appcache manifest
HTML5 Mobile Boilerplate 中的内容。
添加:
网络: *
到 appcache 文件。我相信这允许下载所有内容以及使所有链接正常工作。
- 我已尝试删除此行:
<meta name="apple-mobile-web-app-capable" content="yes">因为我在这里阅读了 SO 解决了与我类似的问题,但我可以确认它在我的测试中不起作用。当按下主屏幕图标时删除此行或将内容设置为“否”将重定向到 Mobile Safari 而不是全屏打开。
我几乎已将其范围缩小到它是 iOS 6 中的一个错误(我实际上使用的是 iOS 6.0.1),因为我知道现在已经为浏览器中的 Web 应用程序和那些添加到主屏幕。我在这里发布这个问题,看看是否有其他开发者遇到过同样的问题。
【问题讨论】:
标签: ios web-applications mobile-safari manifest offline-caching