iOS WKWebView无法跳转自定义 URL Scheme 类型链接

应用场景,最近在使用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);
}

你可能感兴趣的:(iOS WKWebView无法跳转自定义 URL Scheme 类型链接)