¿Cómo usar AFNetworking para save las cookies permanentemente para siempre, hasta que la aplicación se borre del iPhone?

¿Alguien puede mostrarme cómo save cookies PARA SIEMPRE usando AFNetworking para iOS? Estoy usando ios7 pero creo que esto no debería importar?

El caso de uso es que tras una authentication exitosa con un service web, me da dos cookies que debo transmitir junto con cada request. Estas cookies nunca caducan, o caducan años a partir de ahora. Siempre que tenga las cookies con cada request de HTTPS, el usuario no tiene que iniciar session nuevamente. Entiendo que AFNetworking persiste automáticamente las cookies hasta que abandone la aplicación, pero necesito que las cookies duren para siempre hasta que el usuario elimine la aplicación de su teléfono.

1) Tras una authentication exitosa, el service web me entrega dos cookies. ¿Cómo accedo a ellos? ¿Voy directo al almacenamiento NSHTTPCookie y tomo la cookie por su nombre, o hay una "manera" AFNetworking para hacer esto?

2) ¿Cómo guardo estas dos cookies mágicas permanentemente para que mi subclass de AFHTTPClient pase estas dos cookies mágicas junto con cada request? ¿Solo los guardo dentro de un llavero o NSUserDefaults o NSURLCnetworkingentialsStorage? ¿O de nuevo hay una forma AFNetworking para hacer esto? Leí acerca de un método setAuthorization () dentro de AFNetworking, pero no estoy seguro si esto también se aplica a los nombres de usuario / passwords y cookies.

3) ¿Cómo elimino estas cookies de la forma AFNetworking?

¡¡Gracias!!

AFNetworking no hace nada explícitamente con cookies, por lo que no existe una "forma AFNetworking" de tratar con cookies. Trabajará con NSHTTPCookie y NSHTTPCookieStorage.

En mis proyectos no necesitaba hacer nada específico a las requestes para que trabajaran con cookies. Si necesita un comportamiento de request distinto al que AFNetworking proporciona de forma pnetworkingeterminada, anulará requestWithMethod:path:parameters: en su subclass AFHTTPClient .

  1. Para get las cookies devueltas de una AFJSONRequest, por ejemplo

     NSURLRequest* request = <some request returned from your AFHTTPClient subclass> AFJSONRequestOperation* op = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest* request, NSHTTPURLResponse* response, id userData) { NSArray* cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:url]; } failure:... 
  2. Esta respuesta dice que debe establecer una date de caducidad en la cookie. Si desea persistir las cookies usted mismo, puede convertir las cookies a un dictionary y savelas. Esta respuesta dice que use el llavero.

     NSMutableDictionary* cookieDictionary = [NSMutableDictionary dictionaryWithDictionary:cookiePrefs]; for (NSHTTPCookie* cookie in cookies) { [cookieDictionary setValue:cookie.properties forKey:cookie.name]; } 
  3. Elimine las cookies del NSHTTPCookieStorage. Hay algunos trucos para tener en count. Si ha guardado las cookies usted mismo, elimine los valores almacenados, sin embargo, es apropiado.

     NSArray* cookies = [[NSHTTPCookieStorage shanetworkingHTTPCookieStorage] cookiesForURL:theUrl]; for (NSHTTPCookie* cookie in cookies) { [[NSHTTPCookieStorage shanetworkingHTTPCookieStorage] deleteCookie:cookie]; }