我正在开发一个混合应用程序。
它将从我的服务器中获取内容,并且我将使用应用程序缓存来解决性能和流量成本问题。
即使我使用应用程序缓存,用户第一次打开页面时也必须下载网页。
我想在将应用上传到谷歌播放和苹果应用商店之前存储应用缓存。
然后,如果打包后页面没有更新,应用程序只会检查清单文件。
我可以将应用程序缓存存储在混合应用程序中吗?如果是这样,我在哪里可以获得操作文档,或者我该怎么做?
先感谢您!
ps:我会用phonegap打包webapp。
我正在开发一个混合应用程序。
它将从我的服务器中获取内容,并且我将使用应用程序缓存来解决性能和流量成本问题。
即使我使用应用程序缓存,用户第一次打开页面时也必须下载网页。
我想在将应用上传到谷歌播放和苹果应用商店之前存储应用缓存。
然后,如果打包后页面没有更新,应用程序只会检查清单文件。
我可以将应用程序缓存存储在混合应用程序中吗?如果是这样,我在哪里可以获得操作文档,或者我该怎么做?
先感谢您!
ps:我会用phonegap打包webapp。
迟到总比不回答好,我猜!
答案是肯定的,这是可能的。我在应用商店中有两个应用程序正在执行此操作。它工作得很好,虽然这是一个痛苦的过程(主要是因为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 文件是应用程序的本地文件,因此不要将其保存在您的网络服务器上。