WKWebView - 在 Swift 中的重定向时向 URL 添加参数 - iOS

WKWebView - Add a parameter to the URL on redirect in Swift - iOS

我是 Swift 的新手,目前使用 swift 4.0,并且有一个非常简单的应用程序,其中包含 WKWebView 加载网页。

当页面从一个页面重定向到另一个页面时,我需要将参数附加到 URL。

我正在这个函数中获取重定向事件:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {

}

但在这里我不确定如何通过向其添加参数来更新 URL 然后进行导航。请在导航前帮助更新 URL。

我已经搜索过它并试图找出实现它的方法,但到目前为止我还没有取得进展。 navigationAction.action.url 只是 GET,我无法更新它。

WKNavigationDelegate、URLComponents

class ViewerViewController: UIViewController, WKNavigationDelegate  //<--
// then whenever you call the WKWebView
//ex: URL = https://en.wikipedia.org/wiki/Main_Page

WKWebView.navigationDelegate = self


WKWebView.load(URLRequest)


func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {




    print("URL:", navigationAction.request.url)
    if let host = navigationAction.request.url?.path 
     {
         if host.contains("Main_Page")
          {
              //You can modify this part to form a new url and pass it again.
              var components = URLComponents()
              components.scheme = navigationAction.request.url?.scheme
              components.host =  navigationAction.request.url?.host
              components.path =  navigationAction.request.url!.path 
                        
             print("new URL:", components.url!)
             let customRequest = URLRequest(url: components.url!)

             //change the url and pass it again..
             WKWebView.load(customRequest) //<--load the new url again..
             decisionHandler(.cancel) 
        }
        else
        {
             decisionHandler(.allow) //<-- this will open the page.
        }
     }
     else
     {
         decisionHandler(.allow)
     }
}