打包混合应用程序时,我可以存储HTML5的应用程序缓存吗?

时间:2013-04-15 08:52:15

标签: html5 application-cache hybrid-mobile-app

我正在开发一个混合应用程序。

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

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

我想在将应用上传到google play和apple app store之前存储应用缓存。

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

我可以将应用程序缓存存储在混合应用程序中吗?如果那样,我在哪里可以获取操作方法文档,或者我该如何操作?

提前谢谢!

p.s:我将使用phonegap打包webapp。

1 个答案:

答案 0 :(得分:0)

我觉得最好回答迟到,我猜!

答案是肯定的,这是可能的。我在应用程序商店中有两个正在执行此操作的应用程序。它工作得很合理,虽然这是一个痛苦的过程(主要是因为appcache is a douche),我们正在使用自定义版本的Cordova来实现它。

以下是对如何实现这一点的大致了解:

  • 拥有Cordova index.html指向的空本地存根startPage

  • 在您的网页浏览中实施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文件是应用程序的本地文件,因此请勿将其保留在您的网络服务器上。