2010-06-14 40 views
4

現有應用程序如何實現此功能?在iPhone和iPad上使用UIWebView進行隱私瀏覽

我可以只爲某些網站存儲cookie,並且只能在我的應用程序內部存儲Cookie嗎?據我瞭解,網絡視圖以共享模式存儲Cookie ......以便它們與Safari和其他使用UIWebView的應用程序共享。

+0

只是可以肯定,您是在談論隱私瀏覽或匿名瀏覽? – Senseful 2010-06-17 08:13:49

+0

其實私人瀏覽。我希望能夠徹底清除下載的圖像和Cookie的緩存。 – devguy 2010-06-18 07:40:47

+0

請考慮將標題從「匿名瀏覽」改爲「私人瀏覽」,以便其他搜索它的人不會誤導。他們是兩個完全不同的東西。 – Senseful 2010-06-18 21:33:59

回答

5

按照NSHTTPCookieStoragedocs,Cookie不會應用程序之間共享:

iPhone OS注:Cookies沒有在iPhone OS應用程序之間共享 。

所以它看起來應該是默認的「私人」。您還可以使用[NSHTTPCookieStorage sharedHTTPCookieStorage]對象將Cookie存儲策略設置爲不存儲cookie,或者如果需要,可以使用deleteCookie:方法自行清理。

至於UIWebview加載的其他內容,當您創建由您的webview加載的NSURLRequest時,您可以設置一個緩存策略來控制內容是否被緩存。例如:

NSURLRequest * request = [NSURLRequest requestWithURL: [NSURL URLWithString: url] 
              cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
             timeoutInterval: 60.0] 
[webView loadRequest: request]; 

​​告訴請求忽略緩存並從網絡加載請求。我不確定它是否也阻止了網絡緩存的響應,但可以肯定的是,您可以自行將其從緩存中移除:

[NSURLCache sharedURLCache] removeCachedResponseForRequest:request]; 
4

如果你正在談論私人瀏覽,UIWebView實際上在應用程序關閉後不存儲歷史記錄(只是臨時來回)。相反,你必須自己實現存儲歷史記錄,所以它會自動進行隱私瀏覽。

簡答:不要做任何事情。它已經處於隱私瀏覽模式。

編輯:對於處理緩存看看這個方法:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse 

而且使cashedResponse回報爲零。

+0

嗯......關於歷史......可是關於緩存的圖像和cookies呢?我認爲至少曲奇餅被保留下來了,可能還有圖像......不是嗎? – devguy 2010-06-18 07:39:52

+0

好吧,我更新了我的答案:)。 – 2010-06-19 00:25:00

+0

感謝thyrgle ...聽起來像一個很好的迴應,但...在哪裏/我如何在UIWebView中實現它?或者我應該在NSURLCache的子類中實現,如下所示:http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/ 它是任何UIWebView操作系統不存儲緩存有用嗎? – devguy 2010-06-23 13:54:18

相關問題