Reputation: 241
I am creating a UIWebview
. In UIWebview I have to delete few cookies. How to fin out the cookies file name?
-(void)saveHTTPCookies {
NSMutableArray *cookieArray = [[NSMutableArray alloc] init];
NSArray *currentCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
for (NSHTTPCookie *cookie in currentCookies) {
[cookieArray addObject:cookie.name];
NSMutableDictionary *props = [NSMutableDictionary dictionary];
[props setObject:cookie.name forKey:NSHTTPCookieName];
[props setObject:cookie.value forKey:NSHTTPCookieValue];
[props setObject:cookie.domain forKey:NSHTTPCookieDomain];
[props setObject:cookie.path forKey:NSHTTPCookiePath];
[props setObject:[NSNumber numberWithUnsignedInteger:cookie.version] forKey:NSHTTPCookieVersion];
[props setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];
[userDefaults setValue:props forKey:cookie.name];
[userDefaults synchronize];
}
[userDefaults setValue:cookieArray forKey:@"cookieArray"];
[userDefaults synchronize];
}
Any help is appreciate
Upvotes: 0
Views: 675
Reputation: 11
Delete cookies by specific name, We can use properties of NSHTTPCookieStorage
NSHTTPCookie *cookie = nil;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
NSDictionary *cookieProperties = [cookie properties];
NSString *cookieName = [cookieProperties objectForKey:NSHTTPCookieName];
if ([cookieName isEqualToString:YOUR_COOKIE_NAME]) {
[storage deleteCookie:cookie];
}
}
Upvotes: 1
Reputation: 5435
Delete cookies specific to domain:
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSHTTPCookie *cookie;
for(cookie in [storage cookies]) {
if([[cookie domain] rangeOfString:@"domainName or URL"].location != NSNotFound) {
[storage deleteCookie:cookie];
}
}
Delete all cookies:
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSHTTPCookie *cookie;
for (cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
Upvotes: 1
Reputation: 2126
If you know the url for your custom cookie, below may help you...
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies= [cookieStorage cookiesForURL:
[NSURL URLWithString:@"http://www.sample.com"]];
for (NSHTTPCookie *cookie in cookies) {
[cookieStorage deleteCookie:cookie];
}
Upvotes: 1