2010-12-17 15 views
86

En mi aplicación, tengo un UIWebview que carga la página auth de linkedin para iniciar sesión. Cuando el usuario inicia sesión, las cookies se guardan en la aplicación.¿Cómo eliminar todas las cookies de UIWebView?

Mi aplicación tiene un botón de desconexión que no está relacionado con el inicio de sesión de linkedin. Entonces, cuando el usuario hace clic en este botón, cierra la sesión de la aplicación. Quiero que este cierre también borre sus cookies de linkedin de la aplicación, para que el usuario cierre la sesión completamente.

Respuesta

201

Según this question, puede ir a través de cada galleta en el "Cookie Jar" y eliminarlos, así:

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (NSHTTPCookie *cookie in [storage cookies]) { 
    [storage deleteCookie:cookie]; 
} 
[[NSUserDefaults standardUserDefaults] synchronize]; 
+2

sí, está funcionando, muchas gracias –

+0

No funciona para ios> = 4.0 – Ishu

+0

@Felipe Encontrado de manera temporal, es necesario eliminar las cookies en la carga de la aplicación si se desconecta ultima vez. – Ishu

1

se puede hacer una función dentro del HTML de la vista Web, que limpia las galletas .

Si necesita que la limpieza se realice solo una vez puede activar esta función con un evento Titanium, solo cuando se inicie la aplicación.

7

Acabo de querer añadir algo de información al respecto.

En OS X 10.9/iOS 7 y más tarde, puede utilizar -resetWithCompletionHandler: borrar las cookies y la memoria caché, etc., de toda la aplicación desde su sharedSession:

Vacía todas las cookies, cachés y las tiendas de credenciales, elimina los archivos de disco, vacian las descargas en progreso en el disco y garantiza que las futuras solicitudes ocurran en un nuevo socket.

[[NSURLSession sharedSession] resetWithCompletionHandler:^{ 
    // Do something once it's done. 
}]; 

El para-En lazo con deleteCookie: suena como modificación al enumerar una colección a mí. (No sé, ¿podría ser una mala idea?)

+0

He utilizado ambos métodos que se ejecutan con éxito, pero todavía encuentro que Google sigue mostrando un historial de búsqueda después de todo esto (no se ha registrado). ¿Algunas ideas? Gracias – mylogon

+0

¿Esto afectará cualquier estado de Alamofire y mi consumo de mis API REST Backend? ¿Alamofire no basa su solución en URLSession? – Sajjon

Cuestiones relacionadas