2010-12-17 131 views
86

在我的应用程序中,我有一个UIWebview加载linkedin auth页面进行登录。用户登录时,cookie会保存到应用程序中。如何删除UIWebView的所有cookie?

我的应用程序有一个与linkedin登录无关的注销按钮。所以当用户点击这个按钮时,他从应用程序中注销。我希望这个注销会从应用程序中清除他的linkedin cookies,以便用户完全注销。

回答

201

this question,你可以通过每个cookie中的“饼干罐”,并删除它们,就像这样:

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

是它工作,非常感谢 – 2010-12-18 05:52:44

+0

不工作的IOS> = 4.0 – Ishu 2011-06-02 06:25:30

+0

@Felipe找到一个临时办法,需要删除cookies在用户加载应用,如果你退出上次。 – Ishu 2011-06-02 07:38:10

1

你可以做的WebView的HTML,其清洁饼干里面的函数。

如果您只需要进行一次清洁操作,只需在Titanium事件中触发此功能,只有在应用程序启动时才能完成。

7

只是想补充一些关于这方面的信息。

OS X 10.9/的iOS 7及更高版本,可以使用-resetWithCompletionHandler:清除cookies和整个应用程序的高速缓存等从sharedSession

清空所有的cookies,缓存和凭证存储,删除磁盘文件, 将进行中的下载刷新到磁盘,并确保未来 请求在新套接字上发生。

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

for-in循环deleteCookie:听起来像修改,同时枚举集合给我。 (不知道,可能是一个坏主意?)

+0

我已经使用了两种成功运行的方法,但我仍然发现google在所有这些(未登录)之后仍然显示搜索历史记录。有任何想法吗?谢谢 – mylogon 2017-03-23 21:18:54

+0

这会影响Alamofire的任何状态以及我的Backend REST API的使用情况吗? Alamofire不是基于URLSession的解决方案吗? – Sajjon 2017-06-28 15:47:09