2014-03-25 212 views
7

我正在开发使用科尔多瓦(3.4)的移动应用程序。我的核心应用程序文件嵌入到我的应用程序档案(.apk或.ipa)中,并且必须从我的服务器检索一些文件(js/html/css)。 因此,如果我希望我的应用程序可以脱机使用,则需要对这些文件使用appcacheAppcache在科尔多瓦应用程序

我appcache.manifest的样本:

CACHE MANIFEST 
# version 7 


NETWORK: 
* 
http://* 
https://* 

CACHE: 
# Message module 
http://my.server.ip/module/routes.json 
http://my.server.ip/module/css/style.css 
http://my.server.ip/module/js/controller.js 
http://my.server.ip/module/js/service.js 
... 

我的index.html(嵌入到我的应用程序):

<!DOCTYPE html> 
<html lang="en" xmlns:ng="http://angularjs.org" id="ng-app" ng-app="app" 
          manifest="http://my.server.ip/tmp_appcache.manifest"> 
... 
<body> 
<script> 
    document.addEventListener("deviceready", function(e) { 
     var appCache = window.applicationCache; 

     alert('device ready'); 

     console.log('appCache', appCache); 
     // Fired after the first cache of the manifest. 
     appCache.addEventListener('cached', function(event) { 
      console.log(event); 
      alert('Appcache OK'); 
     }, false); 

     appCache.addEventListener('UpdateReady', function(event) { 
      console.log(event); 
      alert('Appcache Reloaded'); 
     }, false); 


     appCache.addEventListener('error', function(event) { 
      console.log(event); 
      alert('Appcache ERROR'); 
     }, false); 

     appCache.addEventListener('checking', function(event) { 
      console.log(event); 
      alert('Appcache CHECKING'); 
     }, false); 

     appCache.addEventListener('downloading', function(event) { 
      console.log(event); 
      alert('Appcache DOWNLOADING'); 
     }, false); 

     appCache.addEventListener('noupdate', function(event) { 
      console.log(event); 
      alert('Appcache NOUPDATE'); 
     }, false); 

     appCache.addEventListener('obsolete', function(event) { 
      console.log(event); 
      alert('Appcache OBSOLETE'); 
     }, false); 
    }, false); 
</body> 
</html> 

我的问题是,当我启动我的PP(在Android AND iOS),我没有看到任何警报(“准备就绪”除外),并且没有文件被缓存。

如果我打开我的设备浏览器Web应用程序的URL我居然看到我的警觉。

是否有另一种配置的PhoneGap怎样做才能让应用程序缓存?

我见过一些关于enabling appcache in Android的文章,但它似乎是针对旧版本的cordova,而且它不适用于我,如果它是我的问题的根源,appcache应该可以在iOS上使用。

任何想法将是有益的。由于

+0

一直在寻找一个答案了几个小时,还没有同样的问题,发现使用HTML5缓存清单至今清晰的(和工作)的方式...... – Zwik

+1

我创建了一个[问题在科尔多瓦JIRA](https://issues.apache.org/jira/browse/CB-6704)。 – Tako

+0

另一个[JIRA](https://issues.apache.org/jira/browse/CB-6713)关于这个问题 – Tako

回答

1

应用程序缓存不科尔多瓦3.4和高达4.0的支持,并支持没有计划在不久的将来的标准(如17 /月/ 2015年)。

0

基本上你不要求应用程序缓存。检查下面的链接以获得更多清晰度。

https://www.raymondcamden.com/2015/02/26/reminder-you-dont-need-appcache-for-phonegapcordova

+0

您不明白我的问题,正如我所说**我的核心应用程序文件已嵌入到我的应用程序存档(.apk或.ipa)中,并且必须从中检索某些文件(js/html/css)我的服务器。** 所以这篇文章是不相关的 – Tako

+0

好吧,我明白了。我不确定您的确切用例,但作为最佳实践,请尝试将这些文件保留在您的应用程序包中,以防您希望脱机使用这些文件。 –

相关问题