Откройте внешние ссылки за пределами приложения в веб-представлении Xcode

#swift #xcode #webview

#быстрый #xcode #webview

Вопрос:

Создание приложения, в котором у меня есть его часть в WebView. У меня на сайте есть как внутренняя, так и внешняя ссылка.

Я хочу, чтобы внутренние ссылки (с моего веб-сайта) открывались в приложении, а внешние ссылки открывались в браузере.

Погуглил, но не могу найти правильный код для меня. Либо они открывают все ссылки во внешнем браузере, либо все они открываются внутри самого приложения.

Кто-нибудь может мне помочь?

 import UIKit import WebKit import GoogleMobileAds // Admob  class Rekondare: UIViewController, WKNavigationDelegate {  // webView Storyboard  @IBOutlet weak var webView: WKWebView!    // Reklam Admob  @IBOutlet weak var GADBannerView: GADBannerView!    override func viewDidLoad() {  super.viewDidLoad()    // Reklam ADMOB  GADBannerView.adUnitID = "REMOVED" // Min admob  GADBannerView.rootViewController = self  GADBannerView.load(GADRequest())  GADBannerView.delegate = self  //    // Bara light mode  overrideUserInterfaceStyle = .light    // Get the path of the index.html which is part of the Xcode project (resp. in the main bundle).  //guard let htmlPath = Bundle.main.path(forResource: "start", ofType: "html", inDirectory: "www") else {  // return  //}    let myURL = URL(string:"https://google.com") // My website  let myRequest = URLRequest(url: myURL!)  webView.navigationDelegate = self  webView.load(myRequest)    // Create an URL to load it in the webView.  //let url = URL(fileURLWithPath: htmlPath)  //let request = URLRequest(url: url)  //webView.navigationDelegate = self  //webView.load(request)    let refreshControl = UIRefreshControl()  refreshControl.addTarget(self, action: #selector(refreshWebView(_:)), for: UIControl.Event.valueChanged)  webView.scrollView.addSubview(refreshControl)  webView.scrollView.bounces = true    }    @objc  func refreshWebView(_ sender: UIRefreshControl) {  webView?.reload()  sender.endRefreshing()  }   func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -gt; Void) {  // Check for links.  if navigationAction.navigationType == .linkActivated {  // Make sure the URL is set.  guard let url = navigationAction.request.url else {  decisionHandler(.cancel)  return  }   // Check for the scheme component.  let components = URLComponents(url: url, resolvingAgainstBaseURL: false)  if components?.scheme == "http" || components?.scheme == "https" {   if navigationAction.targetFrame == nil {  UIApplication.shared.open(url)  decisionHandler(.cancel)  return  }   // Open the link in the external browser.  UIApplication.shared.open(url)  // Cancel the decisionHandler because we managed the navigationAction.  decisionHandler(.cancel)  return  }  } else {  decisionHandler(.allow)  }  } }  // Reklam ADMOB extension Rekondare: GADBannerViewDelegate {    func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {  print("received ad")  }    func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {  print(error)  } }