在iOS应用程序中保留Cookie?

时间:2011-01-04 19:54:44

标签: cocoa-touch ios

我将在iOS应用中使用NSHTTPCookieStorage来管理从网址中检索到的Cookie,我了解它会在应用程序运行时管理Cookie。但是,我想知道在应用程序关闭后是否可以保留cookie。然后在再次打开应用程序时再次阅读这些cookie。 NSHTTPCookieStorage是否在应用使用之间保留Cookie?或者只是在应用程序运行时?我是否需要使用CoreData来保留这些cookie?“

2 个答案:

答案 0 :(得分:108)

您不应该像其他答案中所建议的那样自己坚持使用Cookie。 NSHTTPCookieStorage会为您保留Cookie,但您需要确保Cookie在服务器端设置了到期日期。

没有过期日期的Cookie被视为“仅限会话”,并会在您重新启动应用时清除。您可以通过NSHTTPCookie中的BOOL属性检查“仅限会话”情况。这是标准的cookie内容,而不是iOS特有的内容。

答案 1 :(得分:45)

您需要在加载应用时重新设置Cookie。我使用这样的代码:

NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"];
if([cookiesdata length]) {
    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
    NSHTTPCookie *cookie;

    for (cookie in cookies) {
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
    }
}

它运作得很好。