現(xiàn)在主流的webview控件一般為UIWebView何WKWebView兩種岔霸。
UIWebView是iOS8以前系統(tǒng)一直沿用的控件,
WKWebView是iOS8以后社搅,蘋果推出的新框架Webkit鸦难。
話不多說标锄,直接給出兩種方式點擊跳轉(zhuǎn)App Store的實現(xiàn)和問題捂蕴。
一.UIWebView跳轉(zhuǎn)
解決辦法1:直接進行跳轉(zhuǎn)
NSURL*jumpUrl =[NSURLURLWithString:@"https://itunes.apple.com/cn/app/id1234567890?mt=8"];
NSURLRequest*request = [NSURLRequestrequestWithURL:jumpUrl];
self.webView = [UIWebView new];
self.webView.delegate = self;
[self.webView loadRequest:request];
解決辦法2:URL攔截譬涡,用webview的delegate方法
- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
//應(yīng)用內(nèi)直接跳轉(zhuǎn)App Store
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/name/id1234567890?mt=8"]];
return YES;
//要想正常跳轉(zhuǎn)App Store,請確保這個函數(shù)內(nèi)沒有對url進行攔截限制
//以下為攔截url跳轉(zhuǎn)方法
NSString *requestString = [[request URL] absoluteString];
if ([requestString rangeOfString:@"http"].location != NSNotFound){
//在此做你想攔截后啥辨,自行完成的操作
return no涡匀;
}
else{
return yes;
}
二.WKWebView跳轉(zhuǎn)
有人會發(fā)現(xiàn):WKWebView無法跳轉(zhuǎn)到APP Store下載溉知,而UIWebView卻可以陨瘩,這是為何?
解決辦法:需要在navigationDelegate中進行攔截级乍,用openURL手動跳轉(zhuǎn)至AppStore舌劳。
代理方法
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{
WKNavigationActionPolicypolicy =WKNavigationActionPolicyAllow;
/* 判斷itunes的host鏈接 */
if([[navigationAction.request.URL host] isEqualToString:@"itunes.apple.com"] &&
[[UIApplicationsharedApplication] openURL:navigationAction.request.URL]){
policy =WKNavigationActionPolicyCancel;}
decisionHandler(policy);
}
ps : WKWebView的坑還是蠻多的,后續(xù)發(fā)現(xiàn)繼續(xù)補充卡者,謝謝(*^__^*)?
至此本文結(jié)束。