在iOS应用程序中保留Cookie?

Ale*_*lex 53 cocoa-touch ios

我将NSHTTPCookieStorage在iOS应用程序中使用来管理从URL检索到的cookie,我知道它将在应用程序的运行时管理cookie.但是,我想知道在应用程序关闭后是否可以保留cookie.然后在再次打开应用程序时再次阅读这些cookie.是否NSHTTPCookieStorage在应用程序之间保留cookie?或者只是在应用程序运行时?我需要用来CoreData坚持这些饼干吗?`

小智 111

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

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


Mag*_*nus 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

  • 在用户默认值中存储cookie可能是一个安全漏洞,因为所有plist都可以通过iFunBox等工具访问.它们应该加密,但最好的行为是遵循@gazreese答案. (3认同)
  • "MySavedCookies"已经存在吗?或者当我的应用程序即将停用时,我是否必须存储? (2认同)