WKWebview中打开第三方自定义url scheme

WKWebview默认是不支持打开第三自定义的url scheme,解决办法就是在页面加载的错误回调或者跳转回调里获取url手动打卡。

swift代码

func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) {
    handleError(error)
}
 
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
    handleError(error)
}
 
func handleError(error: NSError) {
    if let failingUrl = error.userInfo["NSErrorFailingURLStringKey"] as? String {
        if let url = NSURL(string: failingUrl) {
            let didOpen = UIApplication.sharedApplication().openURL(url)
            if didOpen {
                print("openURL succeeded")
                return
            }
        }
    }
}

oc代码


-(void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error;
{
    [self handleError:error];
}

// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
    [self handleError:error];
}

- (void)handleError:(NSError *)error
{
    NSString *url = error.userInfo[NSURLErrorFailingURLStringErrorKey].absoluteString;

if ([strRequest hasPrefix:@"weixin://"]) {
        // 拦截点击链接
//        [self handleCustomAction:strRequest];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:strRequest]];
        // 不允许跳转
        decisionHandler(WKNavigationActionPolicyCancel);
    }else {
        // 允许跳转
        decisionHandler(WKNavigationActionPolicyAllow);
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,282评论 4 61
  • 嗯哼嗯哼蹦擦擦~~~ 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 ...
    philiha阅读 5,061评论 0 6
  • 有媒体报道,一女记者去房地产公司采访,遭遇对方抢夺摄像机,并发生肢体冲突,过程比较恶劣,按照当事人回应:“被抱摔”...
    姬鲲阅读 360评论 0 1
  • 有一个角落,舒服,安静,阵阵芬芳,阳光洒满地板。。。我和我脑海中的空间里的你,可以说说话,不知道有多幸福惬意。什么...
    桃木镯阅读 318评论 0 0
  • 安静下来的时候,才会有大把的时间拿来思考。 忙碌的时候,身体超机能工作,只有闲暇下来,才意识到累。所以,考试过后,...