我想在不同的 webView
中登录同一站点的多个帐户.例如,我的 Tab Bar Controller
包含三个 view controllers 并且每个 view controllers 包含 webView
.例如,我在每个类中为 webView
嵌入了 stackoverflow
url.用户如何使用这三个 webView
同时登录不同的帐户?我已经尝试过了,但我一次只能登录一个用户.我发现我需要为每个 UIWebView
创建单独的 cookie
,但大多数答案都在 Objective-c 中,而不是我想要的正确答案.例如(
您可以通过使用 WKWebSiteDataStore
的不同实例来使用 WKWebView
来做到这一点:
让配置1 = WKWebViewConfiguration()configuration1.websiteDataStore = WKWebsiteDataStore.nonPersistent()self.webView1 = WKWebView(frame: CGRect.zero, configuration: configuration1)self.view.addSubview(self.webView1)让配置2 = WKWebViewConfiguration()configuration2.websiteDataStore = WKWebsiteDataStore.nonPersistent()self.webView2 = WKWebView(frame: CGRect.zero, configuration: configuration2)
不幸的是,应用重启后你会丢失 webView
数据(如 cookie、缓存等),因为非持久性 WKWebsiteDataStore
无法保存到磁盘(您会注意到 WKWebsiteDataStore
实现了 NSCoding
,但它不适用于非持久性存储).
I want to login many accounts of same site in different webView
. For example i have Tab Bar Controller
that contains three view controllers and each view controllers contain webView
. And for example i embed stackoverflow
url for webView
in every class. How user can login to different accounts at the same time using these three webView
? I've tried this but i can just login one user at a time.
I have found that i need to create separate cookie
for every UIWebView
, but mostly answers are in objective-c and not the proper answer i want. For example (First Second Third)
Can any one please tell me how i can do it?
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://stackoverflow.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://stackoverflow.com")
let request = NSURLRequest(URL: requestURL!)
activityIndicator.hidesWhenStopped = true
activityIndicator.startAnimating()
webView.loadRequest(request)
}
func webViewDidFinishLoad(webView: UIWebView) {
activityIndicator.stopAnimating()
}
}
Thanks
You can do this with WKWebView
by using different instances of 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)
Unfortunately, you will loose webView
data (such as cookies, cache, etc) after app restart, because non-persistent WKWebsiteDataStore
can't be saved to disk (you could notice that WKWebsiteDataStore
implements NSCoding
, but it doesn't work for non-persistent stores).
这篇关于两个单独的 cookie 存储(UIWebView 或 WKWebView)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!