Pregunta

¿Alguien sabe si puede abrir un .webarchive mediante programación 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 un safari móvil, pero no funcionó ...

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

¿Fue útil?

Solución

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

para cargar un archivo web en tu paquete, simplemente hazlo

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

[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];

webview es tu UIWebview

Otros consejos

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

Ampliando un poco las sugerencias anteriores, si solo desea capturar 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";

}

AirSharing en el iPhone abrirá los archivos webarchive, pero no tengo idea si lo están haciendo todo ellos mismos o si usan el soporte nativo de webarchive.

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

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