在iPhone和iPad上使用UIWebView进行私密浏览

dev*_*guy 4 iphone uiwebview ipad

现有应用如何实现此功能???

我是否可以仅为某些网站存储Cookie,并且仅在我的应用内存储?据我所知,Web视图以共享模式存储cookie ...因此它们与Safari和其他使用UIWebView的应用程序共享.

小智 5

如果您谈论的是隐私浏览,则 UIWebView 实际上不会在应用程序关闭后存储历史记录(只是临时用于来回)。相反,您必须自己实现存储历史记录,因此它将自动成为隐私浏览。

简短的回答:什么都不做。它已经处于隐私浏览模式。

编辑:为了处理缓存,请检查此方法:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
Run Code Online (Sandbox Code Playgroud)

并使 cashedResponse 返回 nil。


Jas*_*ins 5

根据NSHTTPCookieStorage 文档,应用程序之间不共享cookie:

iPhone OS注意:iPhone OS中的应用程序不共享Cookie.

因此,默认情况下它们似乎应该是"私密的".您也可以使用该[NSHTTPCookieStorage sharedHTTPCookieStorage]对象将cookie存储策略设置为根本不存储cookie,或者deleteCookie:如果需要,可以使用该方法自行清理.

对于UIWebview加载的其他内容,在创建由webview加载的NSURLRequest时,可以设置控制是否缓存内容的缓存策略.例如:

NSURLRequest * request = [NSURLRequest requestWithURL: [NSURL URLWithString: url]
                                          cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                       timeoutInterval: 60.0]
[webView loadRequest: request];
Run Code Online (Sandbox Code Playgroud)

NSURLRequestReloadIgnoringLocalAndRemoteCacheData告诉请求忽略缓存并从网络加载请求.我不确定它是否也会阻止来自网络的响应被缓存,但可以肯定的是,你总是可以自己从缓存中删除它:

[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
Run Code Online (Sandbox Code Playgroud)