2011-11-16 63 views
7

我的應用程序連接到服務器並基於cookie,服務器將發出不同的響應。清除給定iOS應用程序的Cookie

是否無法以編程方式清除Cookie存儲,以便服務器在下次與服務器聯繫時不會識別我的應用程序。

我收集了清除Settings.app中的Cookie只適用於Safari中的cookie。

非常感謝您的評論。

+1

您瞭解['[NSHTTPCookieStorage sharedHTTPCookieStorage]'](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookieStorage_Class/Reference/Reference.html),是? –

+0

現在我。感謝您指出了這一點。 – Besi

回答

16

好了...在我先前的評論跟進(並希望這是你正在尋找的解決方案),你可能想利用:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:]

每個餅乾爲您的網站。

+0

請注意,由於某些原因,你不能用它來調用它來刪除所有的cookie。 – Niralp

+0

@Michael我可以通過iOS應用程序清除safari中的cookie嗎? –

+0

@GaneshKumar [可惜不是](http://stackoverflow.com/questions/9632294/is-it-possible-to-change-ios-safari-settings-programmatically)...蘋果希望用戶決定什麼時候cookie和瀏覽器歷史被清除。 –

2

如果你想你的NSHTTPCookieStorage變化得以保留,你還需要關閉來電

[[NSUserDefaults standardUserDefaults] synchronize]; 

爲了防止這種情況減慢你的應用程序,你可能還需要調用此上後臺線程像這樣:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); 

dispatch_async(backgroundQueue, ^{ 
    //TODO: Cookie deletion logic here 
}); 

編輯:

如果你只需要完全無視餅乾對於一個給定的NSURLRequest,你可以這樣做:

[request setHTTPShouldHandleCookies:NO]; 

其中請求是您的NSURLRequest的實例。

相關問題