在iPhone上打开.webarchive?

时间:2008-10-22 13:23:16

标签: iphone safari webarchive

有人知道你是否可以在iPhone上以编程方式打开.webarchive? .webarchive是Safari打包网页的方式,它将相关资源整合到一个文件中。

我尝试创建一个并浏览到移动版Safari中的链接,但它没有用....

注意:我有点希望没有第三方应用程序可以完成这项工作,因为它是一种很好的方法来打包WebApp以便在iphone上使用而无需第三方工具。

4 个答案:

答案 0 :(得分:16)

iOS支持webarchive。只需在UIWebView上加载它。它只是有效!

在您的捆绑包上加载webarchive,只需执行

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

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

webview是您的UIWebview

答案 1 :(得分:4)

a .webarchive只是一个plist;理论上,您可以使用NSPropertyListSerialization读取它,然后在手机上构建本地文件结构,然后将其泵入UIWebView。或者使用AirSharing。

答案 2 :(得分:3)

根据上面的建议进行一些扩展,如果你只是想抓取HTML,下面的代码片段可能是一个很好的起点。通过检查webMainResource字典,您也可以提取其他材料,例如图像。

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

}

答案 3 :(得分:0)

iPhone上的AirSharing会打开webarchive文件,但我不知道他们是自己做的还是使用原生的webarchive支持。

请参阅http://www.avatron.com/products/