estado @NSHTTPCookieStorage não foi salvo na saída do aplicativo. Algum conhecimento / documentação definitivo por aí?
Lutando contra esse problema e relutante em implementar um sistema de gerenciamento de cookies personalizad
Parece que algum nível oculto da implementação de HTTP do iOS falha ao gerenciar corretamente os cookies sem sessão. Sempre que uma resposta HTTP definir ou excluir um cookie, a inspeção imediata dos cookies NSHTTPCookieStorage produzirá os resultados esperados e indicará o valor sessionOnly correto.
Mas se o aplicativo fechar logo após uma resposta atualizar os cookies, ao reiniciar os cookies sessionOnly = FALSE, serão revertidos para algum estado anterior e as atualizações mais recentes serão perdida
Se os cookies são definidos / excluídos por um cabeçalho de resposta ou pelo NSHTTPCookieSt, orage setCookie: não faz diferenç
Algum vodu de cache / sincronização deve estar acontecendo nos bastidores. O tempo necessário para que o cookie se torne persistente pode levar até 5 segundo
ANYONE lá fora, quem tem ou pode apontar para uma explicação definitiva desse comportamento? É um bug, puro e simples? Ou algum recurso não documentado cujo propósito não compreendo?
Algum código que você pode usar para reproduzir:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
NSHTTPCookie *cookie;
for (cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) {
NSLog(@"%@=%@", cookie.name, cookie.value);
}
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"testCookie" forKey:NSHTTPCookieName];
[cookieProperties setObject:[NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]] forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"www.example.com" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"www.example.com" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
// set expiration to one month from now
[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];
cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
Este código deve gerar um novo valor a cada lançamento. Em vez disso, você verá que, se você sair do aplicativo rapidamente, o valor permanecerá inalterad
Algumas perguntas possivelmente relacionadas ao estouro de pilha:
iphone NSHTTPCookieStorage disponível na reabertura de aplicativos?
iPhone: NSHTTPCookie não é salvo nas reinicializações de aplicativos