一、刪除所有cookie三句話搞定:
NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [storage cookies]) { [storage deleteCookie:cookie]; } //緩衝web清除 [[NSURLCache sharedURLCache] removeAllCachedResponses];
二、儲存cookie
在web開發中,我們經常會利用Cookies追蹤記錄一些使用者資訊,比如登陸產生的token,使用者的一些喜好設定等。在iOS中也是一樣,可以利用Cookies記錄使用者的一些選擇或設定,比如:使用者選擇某個感興趣的行業,他希望下次他再次開啟app的時候能夠直接看到該行業相關的資訊,這時候就可以利用Cookies記錄使用者的選擇,如圖:
利用Cookies記錄使用者選擇
industry_cat代表使用者選擇的感興趣的行業,用戶端發出請求的時候會自動將Cookies帶上,這樣做的好處很明顯,不需要介面做額外的改動,譬如增加一個代表行業的欄位。我們只需要保證Cookies存在且它沒有到期。不過這裡要注意和web瀏覽器不一樣的地方是:iOS中,應用退出,會話結束的時候,Cookies是預設被丟棄的,而瀏覽器預設是儲存的。所以我們還需要對Cookies做一些簡單的操作:
NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray<NSHTTPCookie *> *cookies = [cookieStorage cookiesForURL:[NSURL URLWithString:baseUrl]]; NSMutableArray<NSDictionary *> *propertiesList = [[NSMutableArray alloc] init]; [cookies enumerateObjectsUsingBlock:^(NSHTTPCookie * _Nonnull cookie, NSUInteger idx, BOOL * _Nonnull stop) { NSMutableDictionary *properties = [[cookie properties] mutableCopy]; //將cookie到期時間設定為一年後 NSDate *expiresDate = [NSDate dateWithTimeIntervalSinceNow:3600*24*30*12]; properties[NSHTTPCookieExpires] = expiresDate; //下面一行是關鍵,刪除Cookies的discard欄位,應用退出,會話結束的時候繼續保留Cookies [properties removeObjectForKey:NSHTTPCookieDiscard]; //重新設定改動後的Cookies [cookieStorage setCookie:[NSHTTPCookie cookieWithProperties:properties]]; }];
這樣即達到我們的目的了。