这是关于Android设备上的HTML5离线应用。
我们遇到的问题是,在以下情况下,无法在Android浏览器上加载具有脱机功能的HTML5应用程序(带有完整的缓存清单文件)的书签:
我们最终得到了“无法连接到互联网”的消息。当保存到主屏幕和飞行模式时,该应用程序在iOS设备上运行得非常好。
是否应该保存应用的特定方式,或者这是Android特定的怪癖?
答案 0 :(得分:5)
我会检查并看到:
text/cache-manifest
。CACHE MANIFEST
开头,此后您的网址相对于清单或绝对网址。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类型的缓存清单文件)。希望这会有所帮助。