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

问题描述 投票:0回答:3

当我浏览应用程序中的某些链接(在 UIWebView 中)时,它会打开安装在我的设备中的该链接的应用程序。我如何限制它打开外部应用程序并在我的 UIWebView 中加载相同的 URL。

ios uiwebview redirect deep-linking uiwebviewdelegate
3个回答
4
投票

也许有人会发现它有用:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == .linkClicked, let req = request.urlRequest {
       webView.loadRequest(req)
        return false
    }
    return true
}

因此,我阻止在侧应用程序(例如 YouTube 应用程序)中打开链接,但在 UIWebView 中打开它。


0
投票

您可以在 UIWebViewDelegate 中使用

func webView(UIWebView, shouldStartLoadWith: URLRequest, navigationType: UIWebViewNavigationType)
来做到这一点。例如:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    let urlString = request.url?.absoluteString ?? ""
    if urlString == <your app link on webview> {
        return false
    }

    return true
}

您现在只需将

<your app link on webview>
替换为您不希望 Web 视图导航到的实际链接


0
投票

如果您使用 WKWebView,UIWebView 已弃用,您可以这样做:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
     if navigationAction.navigationType == .linkActivated {
         if let url = navigationAction.request.url {
             webView.load(URLRequest(url: url))
             decisionHandler(.cancel)
             return
         }
     }
     decisionHandler(.allow)
 }
© www.soinside.com 2019 - 2024. All rights reserved.