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

时间:2016-05-07 09:04:26

标签: ios swift wkwebview

当我搜索谷歌并点击Etsy.com时,WKWebView会将我重定向到我的iPhone上安装的Etsy应用程序。 如何禁用此行为?我希望WKWebView将我重定向到etsy.com移动网站。 我正在使用swift。

3 个答案:

答案 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处理程序中明确插入某些代码以打开第三方应用
  • 如果iOS工作不正常(重新启动设备进行修复) - 似乎有一个错误,偶尔会创建您描述的行为(在iOS10.2中观察)