2010-12-17 132 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