当我搜索谷歌并点击Etsy.com时,WKWebView会将我重定向到我的iPhone上安装的Etsy应用程序。 如何禁用此行为?我希望WKWebView将我重定向到etsy.com移动网站。 我正在使用swift。
答案 0 :(得分:8)
不幸的是,WKWebView
不会将带有自定义方案的网址发送回您的应用以自动处理。
如果您在没有特殊处理的情况下尝试此操作,则在用户使用第三方服务进行身份验证后您的Web视图将会挂起,并且您将永远不会收到回调。您可以尝试使用标准http或https方案的重定向URI,但是WKWebView
只会尝试加载它,而不是将其从Web视图中导出到您的本机应用程序来处理。
为了处理重定向,您需要在decidePolicyForNavigationAction
的{{1}}中实施WebPolicyDelegate
来检测自定义网址方案并将其指向您要处理的应用:
WKWebView
您可以找到详细信息here
答案 1 :(得分:0)
我安装了Etsy应用程序并确认搜索" etsy"在Safari中点击第一个结果(etsy.com)将启动Etsy应用程序。
我创建了一个测试"单视图应用程序"在Xcode中,只需将以下行添加到ViewController
的viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
let webView = WKWebView(frame:view.bounds, configuration: WKWebViewConfiguration())
view.addSubview(webView)
webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.google.com")!))
}
搜索etsy并点击第一个结果后,我会在测试应用程序中将我带到etsy.com(不会跳转到Etsy应用程序)。
您是否在代码中做了其他可能导致WKWebView允许重定向的内容?
答案 2 :(得分:-1)
在正常情况下,WKWebView不应该打开第三方应用而不是去网站 - 但我知道有两个例外
WKNavigationDelegate
处理程序中明确插入某些代码以打开第三方应用