incl UIWebView. codificación de contenido / decodificación
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.?
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