17

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

我们遇到了一个问题,即在以下情况下,为支持脱机的 HTML5 应用程序(带有完整的缓存清单文件)添加书签时无法在 Android 浏览器上加载:

  1. 在浏览器上为应用添加书签
  2. 关闭所有无线连接
  3. 完全关闭浏览器
  4. 尝试从主屏幕启动书签

我们最终会收到“无法连接到互联网”消息。当保存到主屏幕和飞行模式时,该应用程序在 iOS 设备上运行良好。

是否有应该保存应用程序的特定方式,或者这是一个特定于 Android 的怪癖?

4

5 回答 5

5

我会检查并看到:

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

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

还要检查您的服务器是否配置为正确发送 MIME 类型:如何设置您的服务器以发送正确的 MIME 类型

于 2013-02-26T21:54:14.343 回答
1

除了 Ben Max Rubinstein 和 Compid 的回答,如果您的应用程序 url 是这样的:example.com/myapp您需要添加以下正斜杠,如下所示:example.com/myapp/.

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

于 2013-02-26T21:35:53.553 回答
1

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

于 2013-06-12T12:57:01.773 回答
1

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

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

于 2013-02-04T03:33:52.850 回答