Я реализую WebView в приложении своей компании, этот WebView предназначен для пользователя, чтобы он мог войти в свою учетную запись в веб-приложении, чтобы он мог выполнить задачу, которую невозможно выполнить в самом приложении.
У меня есть проблема: я вхожу в учетную запись в WebView, после того как я изменю учетную запись пользователя в приложении, учетная запись, отображаемая в WebView, по-прежнему будет той, в которую я вошел впервые, что является проблемой, потому что весь контент WebView должен быть отправлен в отставку каждый раз, когда я закрываю WebView V C.
Вот мой код:
class DashboardWebView: UIViewController, WKNavigationDelegate {
// MARK: - Outlets
@IBOutlet var webView: WKWebView?
// MARK: - Public
var url: URL?
var shouldAutoLogin = false
var shouldRefetch: (() -> Void)?
// MARK: - View life cycle
override func viewDidLoad() {
super.viewDidLoad()
webView?.navigationDelegate = self
title = R.string.localizable.dashboard_webview_title().uppercased()
setNavigationBarStyle(style: NavigationBarStyle.gradientWhiteNoBorder)
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(close))
if let url = url, let webView = webView {
webView.load(URLRequest(url: url))
}
}
override func viewWillDisappear(_ animated: Bool) {
shouldRefetch?()
}
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
print(error)
}
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
if shouldAutoLogin == true {
// This is maid to log in the right Environement, but are not credentials of a user account
let user = "user"
let password = "passWOrd!"
let credential = URLCredential(user: user, password: password, persistence: URLCredential.Persistence.none)
challenge.sender?.use(credential, for: challenge)
completionHandler(URLSession.AuthChallengeDisposition.useCredential, credential)
}
}
// MARK: - Methods
@objc private func close() {
self.navigationController?.dismiss(animated: true)
}
}
webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)
Используется для передачи стабильной среды, учетные данные здесь не совпадают с учетными данными, также у меня такая же проблема при комментировании этого метода.
Мой вопрос: Возможно иметь частную навигацию, удалять все параметры каждый раз, когда я убиваю / создаю экземпляр WebView?
Заранее спасибо