Android设备上的HTML5离线应用

时间:2013-01-30 19:50:24

标签: android html5 caching manifest offline

这是关于Android设备上的HTML5离线应用。

我们遇到的问题是,在以下情况下,无法在Android浏览器上加载具有脱机功能的HTML5应用程序(带有完整的缓存清单文件)的书签:

  1. 在浏览器上为应用添加书签
  2. 关闭所有无线连接
  3. 完全关闭浏览器
  4. 尝试从主屏幕启动书签
  5. 我们最终得到了“无法连接到互联网”的消息。当保存到主屏幕和飞行模式时,该应用程序在iOS设备上运行得非常好。

    是否应该保存应用的特定方式,或者这是Android特定的怪癖?

5 个答案:

答案 0 :(得分:5)

我会检查并看到:

  1. MIME类型确实是text/cache-manifest
  2. 您的缓存清单以CACHE MANIFEST开头,此后您的网址相对于清单或绝对网址。
  3. 您的清单中没有任何损坏的链接或强制NETWORK:标记。

答案 1 :(得分:2)

所以,我在多个实例上遇到过类似的issues with chrome和android。显然,实现没有问题,因为我在FF上尝试了它并且它运行得很好,而safari也是如此。我认为这是唯一的原因是,当chrome运行时,数据正在RAM上的网页上获得缓存。如果您关闭浏览器,并且android结束了该过程,则会初始化一个新的chrome实例,并且您的现有应用程序数据将消失。我无法证实这一点,但似乎很可能是问题。

同时检查您的服务器是否配置为正确发送mime类型:How to set up your server to send the correct MIME types

答案 2 :(得分:1)

缓存清单的文件名是什么?我听说扩展可能会影响android的行为。确保您的文件以.manifest

结尾

此外,请确保您的服务器正确提供清单文件的MIME类型,即text/cache-manifest

答案 3 :(得分:1)

除了Ben Max Rubinstein和Compid的答案之外,如果您的应用网址是这样的:example.com/myapp,您需要添加以下正斜杠:example.com/myapp/

当您在线时,服务器会自动重定向您,但如果您的离线显然不会发生。

答案 4 :(得分:1)

我遇到的是Apache的.manifest配置中的mime.types文件已正确设置为text/cache-manifest,然后下面的几行被覆盖为application/x-ms-application(为了与MS兼容) 'ClickOnce事)。为了解决这个问题,我采用了不同的文件名结尾,即.cachemanifest,正确配置了其mime类型,重新启动了Apache,将清单文件重命名为cache.cachemanifest,更改了我的< html> manifest属性指向这个文件,然后我终于能够在Android上缓存我的web应用程序(桌面浏览器没有任何问题,显然不关心mime类型的缓存清单文件)。希望这会有所帮助。