2011-11-23 18 views
5

Tengo algunos problemas con mi versión actual de PandoraMan (http://github.com/zquestz/PandoraMan). Todo es funcional en su mayor parte, se guarda la posición de la ventana, funciona toda la funcionalidad esencial, sin embargo, estoy viendo un error.Cookies/State of Cocoa WebView no se conserva

Cuando inicio sesión en Pandora, nunca se conserva. Estaba bajo la suposición de que leía las cookies del sistema y el estado compartido con Safari. La versión anterior (usando un xcode antiguo en 10.4) funcionaba bien.

Si abro la aplicación e inicio de sesión con PandoraMan, inicia sesión y el sitio funciona normalmente. Sin embargo, cuando reinicio la aplicación siempre tengo que volver a iniciar sesión. Esto nunca solía suceder, y no puedo encontrar nada en los documentos con respecto a este tema.

Si alguien tiene alguna idea sobre este tema, sería fantástico. El código es de código abierto, por lo que puede verificar el problema sin tener que rebotar código en los comentarios.

+0

Probé algunos otros sitios, por todo lo que no sean de Pandora soy capaz de mantener mi iniciar sesión ... esto se vuelve cada vez más extraño. – quest

+0

¿Alguna actualización de esto? También estoy teniendo este problema creando una aplicación pandora independiente. ¿Has confirmado que este es un problema específico de Pandora? – ndmweb

+0

¿hubo alguna solución para esto? –

Respuesta

1

Su aplicación tiene su propia "cookie jar" en el contenedor [NSHTTPCookieStorage sharedHTTPCookieStorage].

Así es como usted puede echar un vistazo rápido a las cookies en la caja de galletas de la aplicación:

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [cookieJar cookies]) { 
    NSLog(@"%@", cookie); 
} 

Hay varios métodos disponibles para el filtrado y la manipulación. Consulte la documentación NSHTTPCookieStorage para acceder a las cookies, y la documentación NSHTTPCookie para acceder a las propiedades de cookies individuales

Puede ser que esto pueda ayudar a resolver su problema.

+0

Esto es definitivamente útil, sin embargo, ya he determinado que se están enviando las mismas cookies que desde el navegador, por alguna razón Pandora está haciendo algo extraño. Si uso cualquier otro servicio, los inicios de sesión funcionan como se esperaba. Incluso olfateé la conversación http con wireshark, y las cookies enviadas en la solicitud inicial coinciden perfectamente ... – quest

1

Pandora usa localStorage para conservar el estado del usuario. Utilice:

WebPreferences* prefs = [WebPreferences standardPreferences]; 
[prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"]; 
[prefs setLocalStorageEnabled:YES]; 
[self.webView setPreferences:prefs]; 

añadirlas al principio del archivo:

@interface WebPreferences (WebPreferencesPrivate) 
- (void)_setLocalStorageDatabasePath:(NSString *)path; 
- (void)setLocalStorageEnabled:(BOOL)localStorageEnabled; 
@end 

Más: How do I enable Local Storage in my WebKit-based application?

Cuestiones relacionadas