Ios 如何删除UIWebView的所有cookie?

Ios 如何删除UIWebView的所有cookie?,ios,iphone,objective-c,uiwebview,uiwebviewdelegate,Ios,Iphone,Objective C,Uiwebview,Uiwebviewdelegate,在我的应用程序中,我有一个UIWebview,它加载linkedin身份验证页面进行登录。当用户登录时,cookies会保存到应用程序中 我的应用程序有一个与linkedin登录无关的注销按钮。因此,当用户单击此按钮时,他将从应用程序注销。我希望这次注销也能清除应用程序中的linkedin cookie,这样用户就可以完全注销。根据,您可以查看“cookie Jar”中的每个cookie并删除它们,如下所示: NSHTTPCookieStorage *storage = [NSHTTPCooki

在我的应用程序中,我有一个
UIWebview
,它加载linkedin身份验证页面进行登录。当用户登录时,cookies会保存到应用程序中

我的应用程序有一个与linkedin登录无关的注销按钮。因此,当用户单击此按钮时,他将从应用程序注销。我希望这次注销也能清除应用程序中的linkedin cookie,这样用户就可以完全注销。

根据,您可以查看“cookie Jar”中的每个cookie并删除它们,如下所示:

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

您可以在WebView的html中创建一个函数来清理cookies


如果你只需要清洁一次,你可以在应用程序启动时用钛合金事件触发此功能。

只想添加一些有关此的信息

OS X 10.9/iOS 7及更高版本中,您可以使用从
共享会话中清除整个应用程序的cookie和缓存等:

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


带有
deleteCookie:
for In-loop在我枚举集合时听起来像是在修改。(不知道,这可能是个坏主意?

如果有人正在寻找快速解决方案:

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

@Felipe找到了一个临时方法,如果您上次注销,需要在应用程序加载中删除Cookie。@Ishu好吧,是的,这正是我现在正在做的,但它并没有真正回答如何真正永久删除Cookie而不仅仅是当前会话的问题。它永久删除Cookie。之后发出的任何请求都可能导致重新创建Cookie。另外,如果您只想在用户注销的情况下删除cookie,那么我建议只删除会话cookie,因为注销实际上只是会话的终止。否则,您将丢失用户希望在会话间保留的潜在设置。请务必调用[[NSUserDefaults standardUserDefaults]synchronize],以确保更改保存到磁盘@felipe这就是为什么在后续运行中会看到Cookie返回。我尝试了这个方法,但存储返回0计数,我在iOS 8模拟器上测试了它。那么我如何才能在safari上删除facebook的Cookie。我使用了两种方法都成功运行了,但我仍然发现,在所有这些之后,google仍然显示了搜索历史记录(未登录)。有什么想法吗?谢谢这会影响Alamofire的任何状态以及我对后端REST API的使用吗?Alamofire的解决方案不是基于URLSession吗?
    let storage = HTTPCookieStorage.shared
    if let cookies = storage.cookies{
        for cookie in cookies {
             storage.deleteCookie(cookie)
        }
    }