53 votes

La persistance des Cookies Dans Une Application iOS?

Je vais utiliser NSHTTPCookieStorage dans une Application iOS pour gérer les cookies qui sont récupérées à partir d'une url, et je comprends qu'il faut gérer les cookies au cours de votre application d'exécution. Cependant, je me demandais si il est possible de persister cookies après la fermeture de l'application. Et ensuite lire ces cookies de nouveau lorsque l'application est ouverte de nouveau. N' NSHTTPCookieStorage persistent cookies entre l'application utilise? Ou tout simplement pendant les applications d'exécution? Dois-je utiliser CoreData persister ces biscuits?"

111voto

gazreese Points 353

Vous ne devriez pas besoin de conserver les cookies vous-même comme il est suggéré dans l'autre réponse. NSHTTPCookieStorage persistent cookies pour vous, mais vous devez vous assurer que les cookies ont une date d'expiration indiquée sur le côté serveur.

Cookies sans date d'expiration sont considérées comme des "session" et obtenir effacée lorsque vous redémarrez l'application. Vous pouvez vérifier la 'session' de la situation par l'intermédiaire d'un BOOL propriété en NSHTTPCookie. C'est la norme cookie trucs et pas quelque chose de spécifique à iOS.

45voto

Magnus Points 1467

Vous avez besoin de re-régler les cookies lorsque votre application est chargée. J'ai utiliser le code comme ceci:

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

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

et il fonctionne très bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X