Does anyone know if you can programmatically open a .webarchive on the iPhone? A .webarchive is Safari's way of packaging up a webpage and it's associated resources into a single file.
I tried creating one and browsing to a link to one in mobile safari, but it didn't work....
Note: I was kind of hoping this could be done without a 3rd party app, as it'd be a nice way to package up a WebApp for use on the iphone without needing a third party tool.
webarchive is supported on iOS. Just load it on UIWebView. It just works!
for loading a webarchive on your bundle, just do
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
webview is your UIWebview
a .webarchive is just a plist; theoretically, you could read it using NSPropertyListSerialization and then build a local file structure on the phone, then pump that into a UIWebView. Or use AirSharing.
Expanding a little on suggestions above, if you just want to grab the HTML, the following code snippet may be a good starting point. By inspecting the webMainResource dictionary you can extract other material too, such as images.
#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 on the iPhone will open webarchive files, but I've no idea if they are doing it all themselves or using native webarchive support.
来源:https://stackoverflow.com/questions/225699/open-a-webarchive-on-the-iphone