2013-04-15 107 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文件是應用程序的本地文件,因此請勿將其保留在您的網絡服務器上。

相關問題