Swift:为Safari应用程序设置自定义Cookie

时间:2017-05-22 09:24:25

标签: ios swift cookies httpcookie

我有iOS应用程序,您需要登录,并查看一些用户数据... 对于一些额外的编辑,我有url链接到页面,用户可以在哪里设置一些特殊属性,...但是如果用户已经登录到应用程序,那么用户登录页面内容真的很烦人。

出于这个原因,我需要在HTTPCookieStorage中存储自定义cookie,这样当用户导航到页面时,将为他设置身份验证cookie。

如何使用键值创建自定义Cookie,并将其存储,以便Safari在用户导航到我的页面时使用它?

修改

我会提供更多信息,以便更好地了解我的情况。

我的应用内有一个按钮。

点击此按钮后,我调用API获取有效令牌。 收到令牌后,我需要将此令牌存储为cookie。 "服务器"这样做的方式是

localStorage.setItem('token', this.token)

我将此令牌存储到HTTPCookieStorage后,我将打开我的页面。

UIApplication.shared.open(myURL, options: [:], completionHandler: { (success) in
                        print("Url open")
                    })

在myURL的页面中,应用程序会查找令牌cookie。如果存在cookie,则打开Web应用程序,否则显示登录页面。

所以我的目标是阻止打开登录页面。

1 个答案:

答案 0 :(得分:-1)

存储您的Cookie:

func storeCookies() {
    let cookiesStorage = HTTPCookieStorage.shared
    let userDefaults = UserDefaults.standard

    let serverBaseUrl = "http://example.com"
    var cookieDict = [String : AnyObject]()

    for cookie in cookiesStorage.cookies(for: NSURL(string: serverBaseUrl)! as URL)! {
        cookieDict[cookie.name] = cookie.properties as AnyObject?
    }

    userDefaults.set(cookieDict, forKey: "cookiesKey")
}

<强>提取

func restoreCookies() {
    let cookiesStorage = HTTPCookieStorage.shared
    let userDefaults = UserDefaults.standard

    if let cookieDictionary = userDefaults.dictionary(forKey: "cookiesKey") {

        for (_, cookieProperties) in cookieDictionary {
            if let cookie = HTTPCookie(properties: cookieProperties as! [HTTPCookiePropertyKey : Any] ) {
                cookiesStorage.setCookie(cookie)
            }
        }
    }
}