我们正在为ipod touch / iphone开发一个html5离线webapp。我们有清单和一切正常工作,但我们无法弄清楚为什么我的应用程序不会在iphone safari中的'tab'关闭后重新打开。
例如,这是有用的:
1)在ipod touch上的safari中打开启用了离线功能的html文件的URL
2)退出野生动物园,关掉wifi
3)回到safari,动态webapp在窗口中,点击刷新
4)app离线工作!
但是,如果我们这样做,离线应用程序会消失:
5)将书签添加到应用的网址(或主屏幕图标)
6)关闭safari中的“标签”或窗口
7)打开书签或主屏幕图标
8)错误消息:“无法打开页面:Safari无法打开页面,因为它未连接到互联网。”
我已经搜索了一下这个问题了,你知道怎么回事,我会在这里点击'post'后2秒找到答案..但无论如何我的直觉是当前最新的iphone OS版本safari正试图在网址上进行dns查找并出错,而不是意识到它已经在设备上有本地存储的应用程序。
任何人遇到这个?我可以在我的清单中设置一些标志或者其他东西来解决这个问题吗?
答案 0 :(得分:2)
您可能没有正确配置服务器。 Apple文档没有明确说明这一点。
如果您的服务器正在运行Apache(最有可能),则需要编辑此文件:
/user/local/apache2/conf/mime.types
将此行添加到结尾:
text/cache-manifest manifest
您需要重启Apache才能使设置生效。可能像是一样的东西
来自shell的restart_apache
。
这里发生的是服务器需要使用正确的内容类型集将缓存文件返回给您。如果您不这样做,该文件可能会以“文本”的形式返回。如果设置正确,它将返回一种'cache-manifest'。
要测试返回文档的mime类型,请使用web-sniffer.net。输入清单文件的URL - 您将看到Content-Type中显示的结果:
答案 1 :(得分:1)
提示:检查每当您对清单中的文件进行更改时,您都会在清单中更改某些内容,以指示需要下载这些文件。并注意可能未根据其过期设置检查更改的缓存文件
答案 2 :(得分:0)
似乎Safari(以及iPhone)希望所有文件都列在清单中 - 甚至是应用程序的主文件。我使用default.asp作为我的应用程序的主页面,而不是在清单中包含它。我的应用程序是从mydomain.com/myapp/运行的,因此浏览器从未看到“default.asp”。另外,根据HTML5规范,主页面不需要在清单中,但显然Safari看起来有点不同。
我的解决方案是避免使用default.asp并调用我的app app.asp并将“app.asp”添加到清单中。希望这会有所帮助。