WebView点击跳转App Store实现及问题

现在主流的webview控件一般为UIWebView何WKWebView两种。

UIWebView是iOS8以前系统一直沿用的控件,

WKWebView是iOS8以后,苹果推出的新框架Webkit。

话不多说,直接给出两种方式点击跳转App Store的实现和问题。

一.UIWebView跳转

解决办法1:直接进行跳转

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{

//应用内直接跳转App Store

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/name/id1234567890?mt=8"]];

return YES;

//要想正常跳转App Store,请确保这个函数内没有对url进行拦截限制

//以下为拦截url跳转方法

NSString *requestString = [[request URL] absoluteString];

if ([requestString rangeOfString:@"http"].location != NSNotFound){

//在此做你想拦截后,自行完成的操作

return no;

}

else{

return yes;


二.WKWebView跳转

有人会发现:WKWebView无法跳转到APP Store下载,而UIWebView却可以,这是为何?

解决办法:需要在navigationDelegate中进行拦截,用openURL手动跳转至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的坑还是蛮多的,后续发现继续补充,谢谢(*^__^*) 

至此本文结束。

你可能感兴趣的:(WebView点击跳转App Store实现及问题)