У меня есть требование, чтобы мне нужно было получить данные из api в appdelegate и решить, куда go, сценарий, в котором я столкнулся с проблемой, заключается в том, что я делаю WebViewController как root viewcontroller в делегате приложения сразу после того, как я получил данные из api у этого viewcontroller есть wkwebview, и я загружаю URL-адрес в этот wkwebview, который я получил из api, в то же время мне нужно открыть Safari с тем же URL-адресом, и я сделал это сразу после строки кода, в которой я сделал WebViewController как root ViewController. Проблема в том, что когда WebViewController загружается, затем открывается сафари, теперь, когда я переключаюсь с сафари на приложение, он снова открывает сафари, и это l oop продолжается.
Вот мой код AppDelegate.swift
if status == "1" {
DispatchQueue.main.async {
self.window?.rootViewController = WebViewController()
self.window?.makeKeyAndVisible()
if jump_type == "web" {
if let url = URL(string: urlStr) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
}
}
}
else {
DispatchQueue.main.async {
self.window?.rootViewController = FirstViewController()
self.window?.makeKeyAndVisible()
}
}
.... task.resume()
в WebViewController
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
В WebViewController в viewdidload
let url = URL(string: urlStr)!
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true