HTML5网络应用程序在iOS中添加到主屏幕时不缓存

Pau*_*aul 15 web-applications manifest mobile-safari offline-caching ios

要明确的是,Web应用程序正在缓存,并且在Mobile Safari中可以正常脱机工作.

问题是它被添加到iPhone 4s和iPad 2的主屏幕上,两者都运行iOS 6.0.1.它将无法脱机工作并且在连接到互联网时出现网络错误,即"无法打开MYWEBAPP.由于未连接到互联网,因此无法打开MYWEBAPP"

我已经调试了几个小时,似乎无法找到解决方案.我没有收到控制台中的任何错误,我正在运行Jonathan Stark的调试代码

我已经在桌面Safari,Chrome和Firefox的在线/离线开发者工具中测试了该应用.以及Safari中使用设备的Web Inspector.iPhone或iPad上的结果相同.它们将缓存Web应用程序并将在Mobile Safari中运行,但在添加到主屏幕时则不会.离线或在线都没有错误.

据我所知,我正在使用最佳实践:

  1. 添加了HTML标头: <html manifest="photo.appcache">

    我还尝试使用清单文件的不同名称,包括:cache.manifest和offline.manifest,因为我读到它有所不同,但在我的测试中,只要扩展名是什么名称并不重要. manifest或.appcache,并在.htaccess文件中正确提供.

  2. 添加了正确的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清单

    就像HTML5 Mobile Boilerplate中的内容一样.

  3. 添加:

网络:*

到appcache文件.我相信这允许下载所有内容以及使所有链接都能正常工作.

  1. 我已经尝试删除这一行: <meta name="apple-mobile-web-app-capable" content="yes"> 因为我在这里阅读了解决了类似于我的问题,但我可以确认它在我的测试中不起作用.按主屏幕图标时删除此行或将内容设置为"否"将重定向到Mobile Safari而不是全屏打开.

我已经把它缩小到它是iOS 6中的一个错误(我实际上使用的是iOS 6.0.1),因为我知道现在已经将数据分离为浏览器中的Web应用程序和添加到主屏幕的数据.我在这里发布这个问题,看看是否有其他开发人员遇到了同样的问题.

Pau*_*aul 15

我已经解决了这个问题.我建议在iOS 6中使用以下主屏幕Web应用程序.

出于测试目的,使用Web Inspector和一个很好的JS脚本(如Jonathan Stark)来了解应用程序何时在Mobile Safari中缓存:

http://jonathanstark.com/blog/debugging-html-5-offline-application-cache?filename=2009/09/27/debugging-html-5-offline-application-cache/

成功缓存后,将应用程序添加到主屏幕并保持打开状态,以便单独缓存主屏幕版本.它必须完全缓存才能脱机工作.

由于我的应用程序缓存是22mb的数据,并且Web应用程序的数据缓存是独立的,因此我遇到的问题是没有让主屏幕应用程序打开足够长的时间来缓存.

就用户体验而言,这是可怕的,但数据是分开的也是好的.我可以确认这一点,因为如果您从Safari中删除网站数据,主屏幕Web应用程序仍将起作用.

据我所知,没有办法调试主屏幕Web应用程序缓存的数据,或者存储它的位置.