iPhone: NSHTTPCookie is not saved across app restarts

后端 未结 7 566
梦如初夏
梦如初夏 2020-12-01 05:14

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

7条回答
  •  孤城傲影
    2020-12-01 06:01

    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)
    }
    

提交回复
热议问题