ios - Swift 5 禁用从 WKWebView 重定向到不同的应用程序
问题描述
我的应用程序内部有一个WKWebView
。问题是,例如,当访问https://stockx.com/de-de并且用户拥有StockX应用程序时,用户会被重定向到该应用程序。有没有办法在我的流派中禁用这种重定向webView
?我在这方面找不到任何东西......不太确定你是否需要代码,但这是我的webView
:
lazy var webView: WKWebView = {
let webConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
return webView
}()
显然,较旧的 Swift 版本有此功能:
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)
}
但这不再适用于Swift 5。知道如何在 Swift 5 中做到这一点吗?
解决方案
所以这里发生的事情是网络应用程序初始化通用链接。理论上你可以做些什么来阻止这个:
参考这个答案
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)
}
推荐阅读
- java - Kubernetes 中的按需容器
- c# - 起订量,方法 HttpClient.SendAsync 是公开的。怎么修?
- javascript - 如何在 map() 函数中左右更改网格项的位置
- mapbox - 获取给定 Lat/Long bbox 矩形的准确卫星图像?
- python - 如何解决 Google colab 的错误消息消失
- ethereum - ERC721 NFT 创建一个功能来购买/出售由合约所有者预先设定的 NFT,安全问题
- python - 如何在终端中正确执行选择 - VSCode Python?
- azure - 如何根据 adf 管道上次成功运行日期从 FTP 位置加载 csv 文件?
- python - 如何使用 boto3 在我的 VPC 中找到前 X 个最昂贵的 EC2 实例(包括 EBS)?
- python - docker 容器上的库错误(AWS Lambda)