当我搜索google并点击Etsy.com作为例子,WKWebView重定向到我的iPhone上安装的Etsy应用程序.
如何禁用此行为?我想要WKWebView将我重定向到etsy.com手机网站.
我正在使用 swift.
如何禁用此行为?我想要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