Я собираюсь использовать NSHTTPCookieStorage
в приложении iOS для управления куки-файлами, которые извлекаются из URL-адреса, и я понимаю, что он будет управлять кукисами во время выполнения вашего приложения. Тем не менее, мне было интересно, можно ли сохранить cookie после закрытия приложения. И затем снова прочитайте эти файлы cookie, когда приложение снова откроется. Делает ли NSHTTPCookieStorage
сохранение файлов cookie между приложениями? Или только во время выполнения приложений? Нужно ли использовать CoreData
, чтобы сохранить эти куки? `Сохраняющиеся файлы cookie в приложении iOS?
50
A
ответ
44
Необходимо перезагрузить куки-файлы, когда ваше приложение загружено. Я использую такой код:
NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"];
if([cookiesdata length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
NSHTTPCookie *cookie;
for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
и он работает просто отлично.
103
Вам не нужно сохранять файлы cookie самостоятельно, как это предлагается в другом ответе. NSHTTPCookieStorage
сохранит файлы cookie для вас, но вы должны убедиться, что файлы cookie имеют дату истечения срока действия, установленную на стороне сервера.
Файлы cookie без истечения срока действия считаются «только сеансами» и будут очищены при перезапуске приложения. Вы можете проверить ситуацию «только для сеанса» через свойство BOOL в NSHTTPCookie
. Это стандартный материал cookie, а не что-то особенное для iOS.
Является ли 'MySavedCookies' уже там? Или мне нужно сохранить это, когда мое приложение перестанет действовать? – Alex
Вы должны сохранить его самостоятельно - это просто, где я спасу. – Magnus
Хранение файлов cookie в пользовательских настройках по умолчанию может быть недостатком безопасности, так как все plist могут быть доступны с помощью таких инструментов, как iFunBox и т. Д. Они должны быть зашифрованы, но лучше всего следовать за ответом @gazreese. –