Domanda

Qualcuno sa se è possibile aprire a livello di programmazione un .webarchive su iPhone? Un .webarchive è il modo di Safari di impacchettare una pagina Web e le risorse associate in un singolo file.

Ho provato a crearne uno e a cercare un link in Safari mobile, ma non ha funzionato ....

Nota: speravo che questo potesse essere fatto senza un'app di terze parti, in quanto sarebbe un bel modo per impacchettare una WebApp da usare su iPhone senza bisogno di uno strumento di terze parti.

È stato utile?

Soluzione

webarchive è supportato su iOS. Basta caricarlo su UIWebView. Funziona e basta!

per caricare un archivio web sul tuo bundle, basta

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

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

webview è la tua UIWebview

Altri suggerimenti

un .webarchive è solo un plist; teoricamente, potresti leggerlo usando NSPropertyListSerialization e quindi costruire una struttura di file locale sul telefono, quindi pomparla in un UIWebView. Oppure usa AirSharing.

Espandendo un po 'i suggerimenti sopra, se vuoi semplicemente prendere l'HTML, il seguente frammento di codice potrebbe essere un buon punto di partenza. Ispezionando il dizionario webMainResource è possibile estrarre anche altro materiale, come le immagini.

#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 su iPhone aprirà i file webarchive, ma non ho idea se lo stanno facendo da soli o usando il supporto webarchive nativo.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top