6

I have an app that makes request to a REST service. Authentication is done using cookies. This already works.

What I have problems with is to test the case when the cookie is no longer valid and my code has to reauthenticate. To test this I have to wait until the cookie is invalid, which could take some time. To accelerate this I figured that if I delete the cookie it would have the same effect.

How to delete all cookies of an app on the iPhone simulator?

I already tried the following:

Deleting <app-dir>/Library/Cookies/Cookies.binarycookies doesn't work. It seems that my cookies are never written to this file.

Deleting all cookies in NSHTTPCookieStorage on app startup doesn't work either.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
sliver
  • 1,640
  • 2
  • 14
  • 22

6 Answers6

22

YOU CAN RESET THE SIMULATOR

  • Launch the simulator.
  • Click the FIRST item on the "menu bar". It says "iOS Simulator"
  • A menu will appear. Go down three items to "Reset Contents and Settings"
  • Click "Reset" on the dialog which appears

iPhone Simulator Reset Cookies

Daniel Sokolowski
  • 10,545
  • 3
  • 61
  • 49
Fattie
  • 30,632
  • 54
  • 336
  • 607
  • Resetting it is indeed likely the easiest route unless you don't want to reset everything else in the simulator. – Matthew Frederick Dec 13 '10 at 09:38
  • That is not an option, I need to have the rest of my content not deleted. Though I could copy it back after reset. – sliver Dec 13 '10 at 09:43
  • No I have various files (e.g. sqlite dbs) that save user data which are necessary for my tests. – sliver Dec 13 '10 at 09:56
  • This answer seems to be out of date. See https://stackoverflow.com/questions/2763733/how-to-reset-iphone-simulator – mpelzsherman Sep 26 '19 at 21:47
14

You'll probably find better luck doing this in the SDK code rather than modifying file systems. Try:

    //Delete previous cookies
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }
shein
  • 1,824
  • 15
  • 23
9

The cookies are located at:

/Users/<YourUsername>/Library/Application Support/iPhone Simulator/<iOSversion>/Library/Cookies/Cookies.binarycookies

You may need to quit out of Safari (in the fast app switching area) and then delete them so Safari won't have them in memory.

Matthew Frederick
  • 22,017
  • 10
  • 68
  • 96
  • That seemed to work only for SDKs prior 4.x. I have that file but it wasn't updated since spring. – sliver Dec 13 '10 at 09:55
  • 2
    Deleting Cookies/Cookies.binarycookies definitely works for me, se above. – Matthew Frederick Dec 13 '10 at 10:37
  • Thx Matthew, you got me a step further. Your directories only work for Safari in my own app these dirs are .../4.2/Applications//Library/Cookies/. I deleted the .dat files that I didn't see before I reseted my simulator. After that my app doesn't save cookies between app starts anymore. Kind of what I need for testing. But it is definitely a strange behavior. – sliver Dec 13 '10 at 10:56
  • Ah, interesting, and definitely strange. Glad you found a solution, anyway. – Matthew Frederick Dec 13 '10 at 11:03
  • The cookie file can be found at: > /Users//Library/Application\ Support/iPhone\ Simulator/4.2/Applications//Library/Cookies/Cookies.binarycookies – Balint Erdi Mar 10 '11 at 11:36
  • @Balint Right, that's what my answer says. – Matthew Frederick Mar 10 '11 at 13:14
  • There is no iPhone Simulator folder in Application Support. Where else could it be? – Martin Braun Jan 24 '18 at 17:06
  • 3
    @modiX This answer was from 2010. A _lot_ has changed since then. *Resetting the simulator is likely your best bet*. If you need to delete single cookies while keeping other things in place, you should be able to find them in `Library/Developer/CoreSimulator/Devices/DEVICEIDENTIFIERHERE/data/Library/Cookies`. Replace "DEVICEIDENTIFIERHERE" with the 37-character UUID directory name for that device. You'll be able to spot the right one if you just sort by "Date Modified" in the Finder. – Matthew Frederick Jan 25 '18 at 15:35
2

I just used fseventer to inspect what happens to the iPhone Simulator filesystem when the "Clear Cookies and Data" button is tapped. These commands replicate that behavior, however, there is a trick:

rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Cookies"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Caches/Snapshots"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Caches/com.apple.mobilesafari"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/WebKit"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Safari"

The Simulator needs to be restarted. So, before manipulating the filesystem, I run this:

killall "iPhone Simulator"
Todd Mazierski
  • 1,407
  • 12
  • 7
0

You can go to the home screen, then the settings app. Tap Safari, then scroll down to Clear Cookies. I'm not sure where the cookie file is on the filesystem, somewhere under /Developer/Platforms/iPhoneSimulator.platform I'd expect (see Matthew Frederick's answer).

Douglas
  • 32,530
  • 8
  • 68
  • 88
-1

Why not force cookie expiration to a low value for testing?

That is exactly the same then.

Lee Armstrong
  • 11,213
  • 13
  • 71
  • 119