ios – 禁用WKWebView打开链接以重定向到我的iPhone上安装的应用程序

前端之家收集整理的这篇文章主要介绍了ios – 禁用WKWebView打开链接以重定向到我的iPhone上安装的应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我搜索google并点击Etsy.com作为例子,WKWebView重定向到我的iPhone上安装的Etsy应用程序.
如何禁用此行为?我想要WKWebView将我重定向到etsy.com手机网站.
我正在使用 swift.

解决方法

不幸的是,WKWebView不会将自定义方案的URL发送回您的应用程序自动处理.

如果您在没有特别处理的情况下尝试此操作,则在用户使用第三方服务进行身份验证后,您的网页视图将会挂起,您将永远不会收到您的回拨.您可以尝试使用具有标准http或https方案的重定向URI,但是WKWebView只会尝试加载它,而不是将其从Web视图导出到您的本机应用程序来处理.

为了处理重定向,您需要在WKWebView的WebPolicyDelegate中实现decisionPolicyForNavigationAction,以检测自定义URL方案并将其引导到您的应用程序进行处理:

func webView(webView: WKWebView,decidePolicyForNavigationAction navigationAction: WKNavigationAction,decisionHandler: ((WKNavigationActionPolicy) -> Void)) {
        print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)")

        let app = UIApplication.sharedApplication()
        let url = navigationAction.request.URL
        let myScheme: NSString = "https"
        if (url!.scheme == myScheme) && app.canOpenURL(url!) {
            print("redirect detected..")
            // intercepting redirect,do whatever you want
            app.openURL(url!) // open the original url
            decisionHandler(.Cancel)
            return
        }

        decisionHandler(.Allow)
    }

您可以找到详细信息here

猜你在找的iOS相关文章