两个单独的 cookie 存储(UIWebView 或 WKWebView)

Separate cookie storage for two (UIWebView or WKWebView)

我想在不同 webView 中登录同一站点的多个帐户。例如,我有 Tab Bar Controller 包含三个 视图控制器 ,每个 视图控制器 包含 webView。例如,我在每个 class 中嵌入 Whosebug url for webView。用户如何使用这三个 webView 同时登录不同的帐户?我已经试过了,但我一次只能登录一个用户。 我发现我需要为每个 UIWebView 创建单独的 cookie,但大多数答案都在 objective-c 中,而不是我想要的正确答案。例如 (First Third) 谁能告诉我该怎么做?

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://whosebug.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://whosebug.com")
        let request = NSURLRequest(URL: requestURL!)
        activityIndicator.hidesWhenStopped = true
        activityIndicator.startAnimating()
        webView.loadRequest(request)

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


}

谢谢

您可以通过使用 WKWebSiteDataStore 的不同实例对 WKWebView 执行此操作:

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,但它不适用于非持久性存储。