Отдельное хранилище файлов cookie для двоих (UIWebView или WKWebView)

Я хочу войти в несколько учетных записей одного и того же сайта в разных webView, Например, у меня есть Tab Bar Controller который содержит три контроллера представления, и каждый контроллер представления содержит webView, И, например, я встраивать stackru URL для webView в каждом классе. Как пользователь может войти в разные учетные записи одновременно, используя эти три webView? Я пробовал это, но я могу просто войти один пользователь за раз. Я обнаружил, что мне нужно создать отдельный cookie для каждого UIWebView, но в основном ответы нацелены на цель, а не правильный ответ, который я хочу. Например ( Первый Второй Третий) Может кто-нибудь сказать, пожалуйста, как я могу это сделать?

class FirstViewController: UIViewController , UIWebViewDelegate{

    @IBOutlet weak var webView: UIWebView!
    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!

    override func viewDidLoad() {
        webView.delegate = self
        let requestURL = NSURL(string: "http://stackru.com")
        let request = NSURLRequest(URL: requestURL!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)

    }
       func webViewDidFinishLoad(webView: UIWebView) {
        activityIndicator.stopAnimating()
    }

}

class SecondViewController: UIViewController, UIWebViewDelegate{

    @IBOutlet weak var webView: UIWebView!
    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!

    override func viewDidLoad() {
        webView.delegate = self
        let requestURL = NSURL(string: "http://stackru.com")
        let request = NSURLRequest(URL: requestURL!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)

    }
        func webViewDidFinishLoad(webView: UIWebView) {
        activityIndicator.stopAnimating()
    }


}

Спасибо

Предварительный просмотр моего исполняемого кода

1 ответ

Решение

Вы можете сделать это с WKWebView используя разные экземпляры WKWebSiteDataStore:

let configuration1 = WKWebViewConfiguration()
configuration1.websiteDataStore = WKWebsiteDataStore.nonPersistent()
self.webView1 = WKWebView(frame: CGRect.zero, configuration: configuration1)
self.view.addSubview(self.webView1)

let configuration2 = WKWebViewConfiguration()
configuration2.websiteDataStore = WKWebsiteDataStore.nonPersistent()
self.webView2 = WKWebView(frame: CGRect.zero, configuration: configuration2)

К сожалению, вы потеряете webView данные (например, файлы cookie, кэш и т. д.) после перезапуска приложения, поскольку они не являются постоянными WKWebsiteDataStore не может быть сохранен на диск (вы могли заметить, что WKWebsiteDataStore инвентарь NSCoding, но это не работает для непостоянных магазинов).

Другие вопросы по тегам