In my iPhone app, I want to be able to reuse the same server-side session when my app restarts. A session on the server is identified by a cookie, which is sent on each requ
Swift 5 version
func storeCookies() {
guard let serverBaseUrl = URL(string: Constants.baseURL) else {
return
}
let cookiesStorage: HTTPCookieStorage = .shared
var cookieDict: [String: Any] = [:]
cookiesStorage.cookies(for: serverBaseUrl)?.forEach({ cookieDict[$0.name] = $0.properties })
let userDefaults = UserDefaults.standard
userDefaults.set(cookieDict, forKey: Constants.cookiesKey)
}
func restoreCookies() {
let cookiesStorage: HTTPCookieStorage = .shared
let userDefaults = UserDefaults.standard
guard let cookieDictionary = userDefaults.dictionary(forKey: Constants.cookiesKey) else {
return
}
let cookies = cookieDictionary
.compactMap({ $0.value as? [HTTPCookiePropertyKey: Any] })
.compactMap({ HTTPCookie(properties: $0) })
cookiesStorage.setCookies(cookies, for: URL(string: Constants.baseURL), mainDocumentURL: nil)
}