iPhone App Cookie Задержка - PullRequest
       0

iPhone App Cookie Задержка

1 голос
/ 27 июня 2010

В моем приложении для iPhone есть UIWebView, который загружает страницу, содержащую JavaScript, который устанавливает cookie. Похоже, что если я установил файл cookie и выйду из приложения в течение 10–15 секунд, тогда файл cookie никогда не будет сохранен, однако, если я установлю файл cookie, подождите 10–15 секунд, ТО после выхода из приложения файл cookie сохраняется.

У всех есть информация о том, почему они задерживаются, и о том, как сохранить куки-файлы немедленно.

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

Единственный обходной путь, который мне удалось найти, - это сохранение файлов cookie с настройками пользователя по умолчанию непосредственно перед закрытием приложения.Когда приложение открыто, просмотрите пользовательские настройки по умолчанию, извлеките файлы cookie и перепишите их в хранилище файлов cookie.Это работает, но если ваше приложение принудительно завершается, то на самом деле это не так.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

    // Load the saved cookies
    NSDate *currentDate = [NSDate date];
    NSTimeInterval expirationAmount = 5 * 365 * 24 * 60 * 60;
    NSDate *expirationDate = [currentDate dateByAddingTimeInterval:expirationAmount];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    for (id theKey in [defaults dictionaryRepresentation]) {
        if ([theKey hasPrefix:@"cookie:"]) {
            [self setCookie:[theKey substringFromIndex:7] value:[defaults objectForKey:theKey] expiration:[expirationDate description] domain:urlDomain];
        }
    }
}

- (void)applicationWillTerminate:(UIApplication *)application {
  // Save the cookies to the user defaults
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  NSArray* theCookies = [cookieStorage cookies];
 for(NSHTTPCookie *myStr in theCookies) {
    [defaults setValue:[myStr value] forKey:[NSString stringWithFormat:@"cookie:%@", [myStr name]]];
     }
     [[NSUserDefaults standardUserDefaults] synchronize];
   }
1 голос
/ 08 сентября 2010

Наличие этой же проблемы. Задержка фактически равна 30 секундам именно из моих тестов. Я потерял пару дней, пытаясь отладить это. Возможно, есть способ обойти эту проблему путем ручного повторного сохранения файлов cookie до истечения 30 секунд, но я еще не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...