2C2P WKWebView无法跳转到Line APP进行支付

Custom scheme URL 在WKWebView中默认是不支持的 (但Safari可以).
我们可以通过NSError来进行一些处理从而使得程序可以正常跳转:

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    LKHideBubble();
    // Line 支付会走两次这个失败回调, 如果不做处理,这里有可能跳转两次Line APP
    NSString *urlStr = error.userInfo[@"NSErrorFailingURLStringKey"];
    if (!(urlStr && urlStr.length)) {
        return;
    }
    if ([self.handledFailedUrls containsObject:urlStr]) {
        return;
    }
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlStr]]) {
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr] options:nil completionHandler:nil];
        } else {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
        }
        [self.handledFailedUrls addObject:urlStr];
    }
}

Note: 在iOS9中,如果你要想使用canOpenURL, 你必须添加URL schemes到Info.plist中的白名单, 否则一样跳转不了...

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

推荐阅读更多精彩内容

  • 很可能你的应用是与一个支持HTTPS传输数据的服务器交互,但是并没有使用TLS 1.2或更高。在这种情况下,你定义...
    Www刘阅读 3,136评论 0 5
  • 我对“是否安装某App”问题的第一反应是,调用系统UIApplication对象的实例方法canOpenURL:来...
    Jacob_LJ阅读 5,253评论 2 3
  • 目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能。本篇文章讲的就是打开别人的APP的一些知识。我们的目...
    橙娃阅读 6,595评论 0 5
  • APP的跳转: 通过[ [UIApplication sharedApplication] openURL:url...
    贪吃的猫cx阅读 7,752评论 5 27
  • 我是个资深的啃指甲癖患者,每当我认真思考或者努力学习时就不自觉地想要啃指甲,这困扰我多年。其实我是个有芊芊玉指...
    皮小懒阅读 655评论 1 2