iOS劝退指南WKWebView

WKWebView打开itunes链接无法跳转至AppStore

2018-05-09  本文已影响90人  neobuger

项目中直接用的WKWebView,最近有需求点击cell调到webview,然后在网页中点击下载按钮,跳转至appstore,但是没有任何反应。
起初以为是web代码的原因,但是跟web确认后发现没有问题
在WKWebView代理方法

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;

错误信息是:

Error Domain=WebKitErrorDomain Code=102 "帧框加载已中断" UserInfo={_WKRecoveryAttempterErrorKey=<WKReloadFrameErrorRecoveryAttempter: 0x1c0c3f020>, NSErrorFailingURLStringKey=itmss://itunes.apple.com/cn/app/*****, NSErrorFailingURLKey=itmss://itunes.apple.com/cn/app/****, NSLocalizedDescription=帧框加载已中断}

网上查阅资料,发现是WKWebView自身的问题。。。
解决方法也挺简单
在WKWebView的另一个方法:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(nonnull WKNavigationAction *)navigationAction decisionHandler:(nonnull void (^)(WKNavigationActionPolicy))decisionHandler {
    WKNavigationActionPolicy policy = WKNavigationActionPolicyAllow;
    /* 简单判断host,真实App代码中,需要更精确判断itunes链接 */
    if([[navigationAction.request.URL host] isEqualToString:@"itunes.apple.com"] && [[UIApplication sharedApplication] openURL:navigationAction.request.URL]){
        policy =WKNavigationActionPolicyCancel;
    }
    decisionHandler(policy);
}

OK!

上一篇 下一篇

猜你喜欢

热点阅读