С момента своего появления я использовал WKWebView вместо UIWebView.Я использовал функцию webView метода делегата (managePolicyFor navigationResponse) для доступа к объекту navigationResponse и свойству allHeaderFields свойства его ответа, чтобы считывать куки-файлы из любого данного запроса.
public func webView(webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
guard let response = navigationResponse.response as? HTTPURLResponse,
let url = response.url,
response.statusCode == 200,
let headers = response.allHeaderFields as? [String: String] else {
decisionHandler(.cancel)
return
}
let cookies: NSArray = HTTPCookie.cookies(withResponseHeaderFields: headers, for: url) as NSArray
for cookie in cookies {
let aCookie = cookie as! HTTPCookie
print("Background oAuth wkwebview response cookie: \(aCookie.name)")
HTTPCookieStorage.shared.setCookie(aCookie)
}
decisionHandler(.allow)
}
В iOS 9-12 (вкл. Бета 1-12 и GM) вплоть до прошлой недели, «куки» в приведенном выше коде всегда заполнялись, если в ответе были куки в заголовках.На этой неделе, с выпуском iOS 12, куки всегда пустые на iOS 12. У меня есть несколько устройств, на которых я тестировал это, но для любого устройства, использующего любую версию iOS 12, куки недоступны.Все предыдущие версии прошивки устройства все еще работают как положено.
У меня есть одно устройство, которое было на 12 Beta 1 прошивки с момента его выпуска.Этот код работал на этом устройстве до этой недели.Почему файлы cookie внезапно перестают быть доступными на iOS 12 без обновления прошивки?