Откройте.webarchive на iphone?

кто-нибудь знает, Можете ли вы программно открыть a .webarchive на iPhone? Ля. webarchive-это способ Safari упаковывать веб-страницу и связанные с ней ресурсы в один файл.

Я попытался создать его и перейти по ссылке на один в mobile safari, но это не сработало....

примечание: Я надеялся, что это может быть сделано без стороннего приложения, так как это был бы хороший способ упаковать WebApp для использования на iphone без использования стороннего инструмента.

4 ответов


webarchive поддерживается в iOS. Просто загрузите его на UIWebView. Это просто работает!

для загрузки webarchive на ваш пакет, просто сделайте

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

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

webview-это ваш UIWebview


a .webarchive-это просто plist; теоретически вы можете прочитать его с помощью NSPropertyListSerialization, а затем построить локальную файловую структуру на телефоне, а затем перекачать ее в UIWebView. Или используйте AirSharing.


немного расширяя предложения выше, если вы просто хотите захватить 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";

}

AirSharing на iPhone откроет файлы webarchive, но я понятия не имею, делают ли они все это сами или используют встроенную поддержку webarchive.

см.http://www.avatron.com/products/