Swift 永久性 cookie 存储
Swift persistent cookie storage
我希望在多个 wkwebview 之间的 swift 中存储一个 cookie。我希望能够使用 wkwebview 登录并在我的应用程序中访问相同的信息。我的第一个问题是如何检查是否有 cookie,以及在完成登录后是否有 cookie,并且 url 是一个特定值,我将如何在整个应用程序中保存和访问 cookie。我还想确保在重新启动应用程序时 cookie 仍然存在。感谢您提前回复!
要在多个网络视图之间共享所有新 cookie,您可以使用 WKProcessPool
因此只需为您的应用创建单个池并将其设置到您的网络视图:
let ProcessPool = WKProcessPool()
...
let configuration = WKWebViewConfiguration()
configuration.processPool = ProcessPool
webView = WKWebView(frame: self.view.bounds, configuration: configuration)
如果您想收到有关 cookie 更改的通知,您应该在创建网络视图之前向 WKWebsiteDataStore
添加一个观察者:
WKWebsiteDataStore.default().httpCookieStore.add(self)
...
extension AppDelegate : WKHTTPCookieStoreObserver {
func cookiesDidChange(in cookieStore: WKHTTPCookieStore) {
cookieStore.getAllCookies { cookies in
print(cookies)
}
}
}
默认情况下,所有来自网络视图的 cookie 都会在您的应用程序启动之间存储。
我希望在多个 wkwebview 之间的 swift 中存储一个 cookie。我希望能够使用 wkwebview 登录并在我的应用程序中访问相同的信息。我的第一个问题是如何检查是否有 cookie,以及在完成登录后是否有 cookie,并且 url 是一个特定值,我将如何在整个应用程序中保存和访问 cookie。我还想确保在重新启动应用程序时 cookie 仍然存在。感谢您提前回复!
要在多个网络视图之间共享所有新 cookie,您可以使用 WKProcessPool
因此只需为您的应用创建单个池并将其设置到您的网络视图:
let ProcessPool = WKProcessPool()
...
let configuration = WKWebViewConfiguration()
configuration.processPool = ProcessPool
webView = WKWebView(frame: self.view.bounds, configuration: configuration)
如果您想收到有关 cookie 更改的通知,您应该在创建网络视图之前向 WKWebsiteDataStore
添加一个观察者:
WKWebsiteDataStore.default().httpCookieStore.add(self)
...
extension AppDelegate : WKHTTPCookieStoreObserver {
func cookiesDidChange(in cookieStore: WKHTTPCookieStore) {
cookieStore.getAllCookies { cookies in
print(cookies)
}
}
}
默认情况下,所有来自网络视图的 cookie 都会在您的应用程序启动之间存储。