Comment les applications existantes implémentent-elles cette fonctionnalité? Puis-je stocker des cookies uniquement pour certains sites, et uniquement dans mon application? Je comprends que la vue web stocke les cookies en mode partagé ... afin qu'ils soient partagés avec Safari et d'autres applications qui utilisent UIWebView.Navigation privée avec UIWebView sur iPhone & iPad
Répondre
Selon le NSHTTPCookieStorage
docs, les cookies ne sont pas partagées entre les applications:
iPhone OS Remarque: Les cookies ne sont pas partagés entre les applications dans iPhone OS.
Il semble donc qu'ils devraient être "privés" par défaut. Vous pouvez également utiliser l'objet [NSHTTPCookieStorage sharedHTTPCookieStorage]
pour définir la politique de stockage de cookies pour ne pas stocker de cookies du tout, ou vous pouvez utiliser la méthode deleteCookie:
pour nettoyer après vous si nécessaire. Comme pour tout autre contenu chargé par votre UIWebview, lorsque vous créez le NSURLRequest qui est chargé par votre webview, vous pouvez définir une politique de cache qui contrôle si le contenu sera mis en cache. Par exemple:
NSURLRequest * request = [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval: 60.0]
[webView loadRequest: request];
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
indique la demande d'ignorer le cache et charger la demande du réseau. Je ne sais pas si elle empêche également la réponse du réseau d'être mis en cache, mais pour être sûr, vous pouvez alway le supprimer du cache vous:
[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
Si vous parlez de la navigation privée, l'UIWebView ne stocke pas l'historique après la fermeture de l'application (seulement temporaire pour aller et venir). Au lieu de cela, vous devrez implémenter l'historique de stockage vous-même, ce serait donc automatiquement la navigation privée.
Réponse courte: Ne faites rien. Il est déjà en mode navigation privée.
EDIT: pour le cache de manipulation vérifier cette méthode:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
Et faire nulle cashedResponse de retour.
mmm ... ok à propos de l'histoire ... mais qu'en est-il des images mises en cache, et des cookies? Je pense qu'au moins les cookies sont conservés, et probablement les images aussi ... non? – devguy
Ok, j'ai mis à jour ma réponse :). –
merci thyrgle ... ça sonne comme une bonne réponse mais ... où/comment l'implémenter dans le UIWebView? Ou devrais-je imeplement dans une sous-classe pour NSURLCache comme montré ici: http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/ Est-ce que c'est Est-ce que le système d'exploitation UIWebView ne stocke pas de cache? – devguy
Juste pour être sûr, vous parlez de la navigation privée ou navigation anonyme? – Senseful
la navigation privée en réalité. Je veux pouvoir effacer complètement le cache des images téléchargées et des cookies. – devguy
S'il vous plaît envisager de changer le titre de "navigation anonyme" à "navigation privée" de sorte que d'autres qui la recherchent ne seront pas induire en erreur. Ce sont deux choses totalement différentes. – Senseful