Сохранение файлов cookie в приложении iOS?

Я собираюсь использовать NSHTTPCookieStorage в приложении iOS для управления куки файлами, которые извлекаются из URL-адреса, и я понимаю, что он будет управлять куки файлами во время выполнения вашего приложения. Тем не менее, мне было интересно, можно ли сохранять файлы cookie после закрытия приложения. И затем снова прочитайте эти файлы cookie, когда приложение снова откроется. Сохраняет ли NSHTTPCookieStorage cookie между приложениями? Или только во время выполнения приложений? Нужно ли использовать CoreData для сохранения этих файлов cookie?

Ответ 1

Вам необходимо повторно установить файлы cookie, когда ваше приложение будет загружено. Я использую код следующим образом:

NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"];
if([cookiesdata length]) {
    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
    NSHTTPCookie *cookie;

    for (cookie in cookies) {
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
    }
}

и он отлично работает.

Ответ 2

Вам не нужно сохранять файлы cookie самостоятельно, как это предлагается в другом ответе. NSHTTPCookieStorage сохранит файлы cookie для вас, но вы должны убедиться, что файлы cookie имеют дату истечения срока действия, установленную на стороне сервера.

Файлы cookie без даты истечения срока действия считаются "только сеансами" и будут очищены при перезапуске приложения. Вы можете проверить ситуацию "только для сеанса" с помощью свойства BOOL в NSHTTPCookie. Это стандартный материал cookie, а не что-то особенное для iOS.