iphone safari webarchive

Abra un.webarchive en el iphone?



safari (4)

¿Alguien sabe si puede abrir programáticamente un .webarchive en el iPhone? Un .webarchive es la forma en que Safari empaqueta una página web y sus recursos asociados en un solo archivo.

Intenté crear uno y buscar un enlace a uno en el safari móvil, pero no funcionó ...

Nota: Esperaba que esto se pudiera hacer sin una aplicación de terceros, ya que sería una buena forma de empaquetar una aplicación web para usar en el iPhone sin necesidad de una herramienta de terceros.


AirSharing en el iPhone abrirá archivos de webarchive, pero no tengo idea de si lo están haciendo por sí mismos o usando soporte nativo de webarchive.

Ver http://www.avatron.com/products/


un .webarchive es solo un plist; teóricamente, podría leerlo usando NSPropertyListSerialization y luego construir una estructura de archivos local en el teléfono, luego bombear eso en un UIWebView. O usa AirSharing.


webarchive es compatible con iOS. Simplemente cárguelo en UIWebView. ¡Simplemente funciona!

para cargar un archivo web en su paquete, solo haga

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile" withExtension:@"webarchive"]; [webView loadRequest:[NSURLRequest requestWithURL:fileURL]];

webview es su UIWebview


Ampliando un poco las sugerencias anteriores, si solo quiere tomar el HTML, el siguiente fragmento de código puede ser un buen punto de partida. Al inspeccionar el diccionario webMainResource también puede extraer otro material, como imágenes.

#define WEB_ARCHIVE @"Apple Web Archive pasteboard type" - (NSString*) htmlStringFromPasteboard; { NSData* archiveData = [[UIPasteboard generalPasteboard] valueForPasteboardType:WEB_ARCHIVE]; if (archiveData) { NSError* error = nil; id webArchive = [NSPropertyListSerialization propertyListWithData:archiveData options:NSPropertyListImmutable format:NULL error:&error]; if (error) { return [NSString stringWithFormat:@"Error: ''%@''", [error localizedDescription]]; } NSDictionary* webMainResource = [webArchive objectForKey:@"WebMainResource"]; NSData * webResourceData = [webMainResource objectForKey:@"WebResourceData"]; NSString* string = [[NSString alloc] initWithData:webResourceData encoding:NSUTF8StringEncoding]; return [string autorelease]; } return @"No WebArchive data on the pasteboard just now"; }