概要
iOSでCookieを使いたいタイミングは通信かWebViewを使用するタイミングが主だと思いますが
そんな時に便利なNSCookieStorageについて書いていきたいとおもいます。
NSCookieStorageの使い方
Cookieの取得
1 2 3 4 |
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; [cookieStorage.cookies enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) { NSLog(@"cookie properties: %@", cookie.properties); }]; |
Cookieの追加
1 2 3 4 5 6 7 8 |
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSDictionary *properties = @{NSHTTPCookieName : @"name", NSHTTPCookieValue : @"value", NSHTTPCookiePath : @"/", NSHTTPCookieDomain : @"example.com", NSHTTPCookieExpires: [[NSDate date] dateByAddingTimeInterval:3600]}; NSHTTPCookie* cookie = [NSHTTPCookie cookieWithProperties:properties]; [cookieStorage setCookie:cookie]; |
特定Cookieの削除
1 2 3 4 5 |
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies = [cookieStorage cookiesForURL:[NSURL URLWithString:@"http://example.com"]]; [cookies enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) { [cookieStorage deleteCookie:cookie]; }]; |
全Cookieの削除
1 2 3 |
[cookieStorage.cookies enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) { [cookieStorage deleteCookie:cookie]; }]; |
補足
NSHTTPCookieStorageは名前こそCookieを永続的に保存してくれそうですが、そんなことはなく自分で保存する必要があります。
NSUserDefaultsなどに保存してあげてください。