【问题标题】:Stop WKWebView redirecting to another app based on Universal link停止 WKWebView 基于通用链接重定向到另一个应用程序
【发布时间】:2019-02-23 11:31:02
【问题描述】:
我们正在使用 WKWebview 自定义加载和管理我们的 ServiceNow 实例,但是当登录成功时,如果用户在登录后安装了“ServiceNow”移动应用程序,它会打开 ServiceNow 应用程序。
尝试阻止最终的 Url 导航操作(decidePolicyfor navigationAction),但没有成功。
这是由于 ServiceNow 端的通用链接而发生的。 http://service-now.com/apple-app-site-association
在我们端阻止此操作的任何方法。
【问题讨论】:
标签:
ios
swift
wkwebview
servicenow
【解决方案1】:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
decisionHandler(WKNavigationActionPolicy(rawValue: WKNavigationActionPolicy.allow.rawValue + 2)!)
}
这似乎解决了问题。
【讨论】:
-
-
之所以有效,是因为:static const WKNavigationActionPolicy WK_API_AVAILABLE(macos(10.11), ios(9.0)) _WKNavigationActionPolicyAllowWithoutTryingAppLink = (WKNavigationActionPolicy)(WKNavigationActionPolicyAllow + 2); github.com/WebKit/WebKit/blob/… 这是一个声明的私有导航策略,它跳过了深度链接。
【解决方案2】:
希望 WKWebView 自定义代理适合您。使用以下代码
webView.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36"