在UIWebView上,不需要特殊处理直接加载 itunes 链接是可以直接跳转至AppStore的。
NSURL*URL =[NSURLURLWithString:@"https://itunes.apple.com/cn/app/id1013277346?mt=8"];
NSURLRequest*request = [NSURLRequestrequestWithURL:URL];
self.webView = [UIWebViewnew];
self.webView.delegate =self;
[self.webView loadRequest:request];
但是,在WKWebView上则不行,需要在navigationDelegate中拦截,手动openURL才能跳转至AppStore。
- (void)loadWithWKWebView{
NSURL*URL = [NSURLURLWithString:@"https://itunes.apple.com/cn/app/id1013277346?mt=8"];
NSURLRequest*request = [NSURLRequestrequestWithURL:URL];
self.wkWebView = [WKWebViewnew];
self.wkWebView.navigationDelegate =self;
[self.wkWebView loadRequest:request];
}
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{
WKNavigationActionPolicypolicy =WKNavigationActionPolicyAllow;
/* 简单判断host,真实App代码中,需要更精确判断itunes链接 */
if([[navigationAction.request.URL host] isEqualToString:@"itunes.apple.com"] &&
[[UIApplicationsharedApplication] openURL:navigationAction.request.URL]){
policy =WKNavigationActionPolicyCancel;}
decisionHandler(policy);
}
难以理解为啥WKWebView上不支持跳转至AppStore。
如果不处理,普通网页上链接至itunes的,点击后都无法跳转了。
WKWebView里面的链接要特殊处理,90一下的系统加载本地文件也是有问题的,我有空写篇博客落,还是蛮多坑的
网友评论