1

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

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

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

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

然后,如果打包后页面没有更新,应用程序只会检查清单文件。

我可以将应用程序缓存存储在混合应用程序中吗?如果是这样,我在哪里可以获得操作文档,或者我该怎么做?

先感谢您!

ps:我会用phonegap打包webapp。

4

1 回答 1

0

迟到总比不回答好,我猜!

答案是肯定的,这是可能的。我在应用商店中有两个应用程序正在执行此操作。它工作得很好,虽然这是一个痛苦的过程(主要是因为appcache 是一个冲洗器)并且我们正在使用定制版本的 Cordova 来做到这一点。

这是您如何实现此功能的粗略想法:

  • index.html有一个你的 CordovastartPage指向的空本地存根。

  • 在您的网络视图中实施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 文件是应用程序的本地文件,因此不要将其保存在您的网络服务器上。

于 2014-06-12T22:12:07.537 回答