我将在iOS应用中使用NSHTTPCookieStorage
来管理从网址中检索到的Cookie,我了解它会在应用程序运行时管理Cookie。但是,我想知道在应用程序关闭后是否可以保留cookie。然后在再次打开应用程序时再次阅读这些cookie。 NSHTTPCookieStorage
是否在应用使用之间保留Cookie?或者只是在应用程序运行时?我是否需要使用CoreData
来保留这些cookie?“
答案 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];
}
}
它运作得很好。