web-dev-qa-db-fra.com

Comment supprimer tous les cookies d'UIWebView?

Dans mon application, j'ai un UIWebview qui charge la page d'authentification linkedin pour la connexion. Lorsque l'utilisateur se connecte, les cookies sont enregistrés dans l'application.

Mon application comporte un bouton de déconnexion qui n'est pas lié à la connexion à linkedin. Ainsi, lorsque l'utilisateur clique sur ce bouton, il se déconnecte de l'application. Je souhaite que cette déconnexion efface également ses cookies linkedin de l'application, afin que l'utilisateur se déconnecte complètement.

91
Vaibhav Saran

Selon cette question , vous pouvez parcourir chaque cookie dans le "Cookie Jar" et les supprimer, comme ceci:

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

Je voulais juste ajouter quelques informations à ce sujet.

Dans OS X 10.9 / iOS 7 et versions ultérieures, vous pouvez utiliser - - resetWithCompletionHandler: pour effacer les cookies et le cache etc. de l'application entière de votre sharedSession:

Vide tous les cookies, les caches et les magasins d'informations d'identification, supprime les fichiers disque, vide les téléchargements en cours sur le disque et garantit que les demandes futures se produisent sur un nouveau socket.

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

La boucle for-in avec deleteCookie: ressemble à modification lors de l'énumération d'une collection pour moi. (Je ne sais pas, ça pourrait être une mauvaise idée?)

8
Cai

Vous pouvez créer une fonction à l'intérieur du HTML de la WebView, qui nettoie les cookies.

Si vous devez effectuer le nettoyage uniquement une fois que vous pouvez déclencher cette fonction avec un événement Titanium, uniquement lorsque l'application démarre.

1
jack kallis

Si quelqu'un cherche Swift Solution:

    let storage = HTTPCookieStorage.shared
    if let cookies = storage.cookies{
        for cookie in cookies {
             storage.deleteCookie(cookie)
        }
    }
0
Saleh Enam Shohag