2013-04-15 61 views
1

我正在开发一款混合应用程序。打包我的混合应用程序时,我可以存储HTML5的应用程序缓存吗?

它会带来我的服务器的内容,我将使用应用程序缓存来解决性能和流量成本问题。

尽管我使用应用程序缓存,但用户在第一次打开页面时必须下载网页。

我想在将应用程序上传到谷歌播放和苹果应用程序商店之前存储应用程序缓存。

然后,应用程序将只检查清单文件,如果包装后页面未更新。

我可以将应用程序缓存存储在混合应用程序中吗?如果那么,我可以在哪里得到如何做文件,或者我该怎么做?

预先感谢您!

p.s:我会用手机打包webapp。

回答

0

回答迟到的时间比从未更晚,我想!

答案是肯定的,这是可能的。我在应用商店中有两个应用正在这样做。它工作得很好,虽然这是一个痛苦的过程(主要是因为appcache is a douche),我们正在使用Cordova的自定义版本来完成它。

这里是如何实现这个粗略的想法:

  • 有你科尔多瓦startPage点在一个空的本地存根index.html

  • 在您的webview中执行webViewDidFinishLoad。它会做两件事 - 在开始时打开appcache页面,并将cordova.ios.js插入到后续页面中。类似这样的:

    - (void)webViewDidFinishLoad:(UIWebView*)webView { 
        if(!_initialPageLoaded) { 
         _initialPageLoaded = YES; 
         NSURL *url = [NSURL URLWithString: @"https://mywebsite.com/app/"]; 
    
         NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:ful]; 
         [self.webView loadRequest:req]; 
    
         return; 
        } 
    
        NSString* jsPath = [[NSBundle mainBundle] pathForResource:@"www/cordova.ios" ofType:@"js"]; 
        NSString* c = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil]; 
    
        [webView stringByEvaluatingJavaScriptFromString:c]; 
    
        return [super webViewDidFinishLoad:webView]; 
    } 
    
  • 利润!

请注意,cordova.ios.js文件是应用程序的本地文件,因此请勿将其保留在您的网络服务器上。

相关问题