I want to store my cookies so that when i reopen the application i can restore the ones stored in the previous instance. To initialize alamofire i use:
let manager = Alamofire.Manager.sharedInstance
And my code to load cookies is:
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headerFields, forURL: URL)
Alamofire.Manager.sharedInstance.session.configuration.HTTPCookieStorage?.setCookies(cookies, forURL: URL, mainDocumentURL: nil)
But when i reboot the phone it forgets all the cookies.
1.Add method to save cookies in NSUserDefaults
func setCookie (cookie:NSHTTPCookie)
{
NSUserDefaults.standardUserDefaults().setObject(cookie.properties, forKey: "kCookie")
NSUserDefaults.standardUserDefaults().synchronize()
}
2.And method to retrieve them after reboot
func getCookie () -> NSHTTPCookie
{
let cookie = NSHTTPCookie(properties: NSUserDefaults.standardUserDefaults().objectForKey("kCookie") as! [String : AnyObject])
return cookie!
}
3.Retrieve cookies from request in Alamofire
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(response.response?.allHeaderFields as! [String: String], forURL: (response.response?.URL!)!)
//Save method
setCookie(cookies.first!)
4.Use getCookie
method after reboot before any request
NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(getCookie())
IMORTANT NOTE: Tested in Swift 2.2