Pregunta

Mi objetivo: continuar una sesión web a través de una interrupción de aplicaciones (por ejemplo, SMS entrantes que se lee.)

.

Enfoque A: He tratado de almacenar el contenido de un UIWebView en NSUserDefaults, como esto:

NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView];
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey];

y luego restaurarlo como:

NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey];
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta];

pero eso no incluye el contenido.

Enfoque B: También he tratado de conseguir el contenido de la UIWebView con:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

A continuación, almacenarlo y recuperarlo de nuevo, y luego tratar de ponerlo en el UIWebView con:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

pero el javascript innerHTML no devuelve todo el contenido.

Todas las ideas, sugerencias, etc.?

¿Fue útil?

Solución

Terminé usando NSURLRequests, y luego almacenar el cuerpo HTTP recuperado y galletas a NSUserDefaults.

Después de la re-entrada a la aplicación leí estos y los puse de nuevo en una UIWebView y en el NSHTTPCookieStorage, y luego limpiar las NSUserDefaults de estas claves.

Otros consejos

Si el documento no hace referencia a ningún recurso (o lo hace de forma explícita), usted debe ser capaz de restaurar la outerHTML:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"];

Para la experiencia más suave que tendrá que restablecer las propiedades de desplazamiento y zoom y mostrar una representación en caché, mientras que la vista web está cargando

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top