我正在將遠程網頁加載到依賴js和css資源的iOS webview中。爲了提高3G網絡的性能,我希望將這些資源從本地文件調用到iOS設備。如何使用本地資源加速iOS中的webview?
支持iOS應用程序的網站也被手機瀏覽器使用,而不僅僅是iOS應用程序,所以NSURLRequest註冊我自己的URL前綴(myurl://)並不理想。
我已經有一個啓動mobileSafari針對URL我的域之外的代碼:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
NSString *hostname = [url host];
if (![hostname hasSuffix:@".mysite.com"] && navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
return YES;
}
這種方法是從相同的控制器實現調用代碼:
- (void)viewDidLoad {
[super viewDidLoad];
// ...
webView.delegate = self;
// ...
NSURL *url = [[NSURL alloc] initWithString:([path length] > 0 ? path : @"http://mysite.com/mobile/index")];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
[webView loadRequest:request];
// ...
}
我查看了其他幾個問題(How to use an iPhone webView with an external HTML that references local images?,Dynamically loading javascript files in UIWebView with local cache not working,,Using local resources in an iPhone webview),但他們似乎都錯過了我的問題的關鍵因素。
第一個環節有什麼前途的開始:
if ([url isEqualToString:@"http://path-to-cdn.com/jquery-1.8.2.min.js"]) {
fileToLoad = [[NSBundle mainBundle] pathForResource:@"jquery-1.8.2.min" ofType:@"js"];
}
如果這是一個明智的做法,我卡在如何從傳遞一個fileToLoad一個NSBundle到的WebView的loadRequest,因爲這是期待一個URL獲得。
我使用這個項目作爲指導,我在這方面取得了重大進展。 http://www.cocoawithlove.com/2010/09/substitution-local-data-for-remote.html – user1214836
好吧,cocoawithlove資源使我能夠回答我自己的問題。 – user1214836