2008-10-22 14 views
7

Weiß jemand, ob Sie ein .webarchive auf dem iPhone programmatisch öffnen können? Ein .webarchive ist die Art und Weise, wie Safari eine Webseite und die zugehörigen Ressourcen in einer einzigen Datei zusammenfasst.Öffnen Sie ein. Webarchiv auf dem iPhone?

Ich habe versucht, ein und das Surfen zu einem Link zu einem in der mobilen Safari zu schaffen, aber es hat nicht funktioniert ....

Anmerkung: Ich Art hatte gehofft, dass dies ohne einen 3rd-Party-App getan werden könnte, Es wäre eine gute Möglichkeit, eine WebApp für die Verwendung auf dem iPhone zu paketieren, ohne ein Drittanbieter-Tool zu benötigen.

Antwort

16

Webarchiv wird unter iOS unterstützt. Laden Sie es einfach auf UIWebView. Es funktioniert einfach!

für eine webarchive auf Ihrem Bündel laden, tun nur

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

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

webview ist Ihr UIWebview

+1

Dies war nicht immer der Fall . Weißt du, welche Version von iOS Unterstützung dafür hinzugefügt hat? – Jim

+1

so weit ich weiß, iOS 2.0 – SpaceDog

+0

es funktioniert nicht für mich - ich bekomme nur eine weiße uiwebview. (iOS 5.0.1) –

0

AirSharing auf dem iPhone öffnet Webarchive-Dateien, aber ich habe keine Ahnung, ob sie alles selbst machen oder native Webarchiv-Unterstützung verwenden.

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

+0

Hinweis: Ich hoffe, Art, dass es ohne einen Dritten app getan werden kann, da es eine schöne Art und Weise würde für einen WebApp HTML + Javascript zu verpacken –

4

ein .webarchive ist nur ein plist; theoretisch könnten Sie es mit NSPropertyListSerialization lesen und dann eine lokale Dateistruktur auf dem Telefon erstellen und diese dann in ein UIWebView pumpen. Oder verwenden Sie AirSharing.

3

ein wenig auf Vorschläge über Erweiterung, wenn Sie nur die HTML greifen wollen, wird der Code folgende Ausschnitt kann ein guter Ausgangspunkt sein. Wenn Sie das webMainResource-Wörterbuch überprüfen, können Sie auch anderes Material, z. B. Bilder, extrahieren.

#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"; 

}