satya
satya

Reputation: 241

How to delete a specific cookies in UIWebview in iOS

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

Answers (3)

user3656244
user3656244

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

Ronak Chaniyara
Ronak Chaniyara

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

Suresh Kumar Durairaj
Suresh Kumar Durairaj

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

Related Questions