iOS Cookies 每次退出應用都被清除解決方法

在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]];
    }];

這樣即達到我們的目的了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容