应用场景,最近在使用testFilght,希望能通过testFilght来做公测。然而在项目中调用活动页的内容时发现,点击跳转不到testFilght的下载页。
在使用 WKWebView 时,我们发现点击链接时,有时候无反应,有时则会打开相应 App 的 Web 页面,而不会直接调起本地APP。
而且,对于自定义的 URL Scheme 类型链接或者是某些规定类型(比如APP Store),在 WKWebView 里直接点击则会报错:Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL"
;
对此,我们需要在WKWebView即将加载URL的时候做处理,修改 WKWebView 的 delegate 中的 webView:decidePolicyForNavigationAction:decisionHandler:
方法
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSString *urlStr = [[navigationAction.request.URL absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSDictionary *parseRet = [urlStr parseCustomUrl];
//处理WKWebView对跳转app store的限制
WKNavigationActionPolicy policy = WKNavigationActionPolicyAllow;
if (([[navigationAction.request.URL host] isEqualToString:@"itunes.apple.com"]|| [[navigationAction.request.URL host] isEqualToString:@"testflight.apple.com"]) && [[UIApplication sharedApplication] openURL:navigationAction.request.URL]) {
policy = WKNavigationActionPolicyCancel;
}
decisionHandler(policy);
}