Während das Abrufen von Cookies UIWebViewdurch die Verwendung unkompliziert NSHTTPCookieStorage.sharedHTTPCookieStorage()erscheint, WKWebViewwerden die Cookies anscheinend an einem anderen Ort gespeichert.
Ich habe einige Nachforschungen angestellt und konnte einige Kekse erhalten, indem ich sie vom NSHTTPURLResponseObjekt genommen habe. Dies enthält jedoch nicht alle Cookies, die verwendet werden von WKWebView:
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let httpResponse = navigationResponse.response as? NSHTTPURLResponse {
if let headers = httpResponse.allHeaderFields as? [String: String], url = httpResponse.URL {
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headers, forURL: url)
for cookie in cookies {
logDebug(cookie.description)
logDebug("found cookie " + cookie.name + " " + cookie.value)
}
}
}
}
Seltsamerweise gibt es WKWebsiteDataStorein ios 9 auch eine Klasse , die für die Verwaltung von Cookies verantwortlich WKWebViewist. Die Klasse enthält jedoch keine öffentliche Methode zum Abrufen der Cookie-Daten:
let storage = WKWebsiteDataStore.defaultDataStore()
storage.fetchDataRecordsOfTypes([WKWebsiteDataTypeCookies], completionHandler: { (records) -> Void in
for record in records {
logDebug("cookie record is " + record.debugDescription)
for dataType in record.dataTypes {
logDebug("data type is " + dataType.debugDescription)
// get cookie data??
}
}
})
Gibt es eine Problemumgehung zum Abrufen der Cookie-Daten?
