Вопрос

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

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

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

Это было полезно?

Решение

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

для загрузки веб-архива в ваш пакет просто выполните

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

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

webview - это ваш UIWebview

Другие советы

.webarchive - это просто список; теоретически вы можете прочитать его с помощью 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 откроет файлы веб-архива, но я не знаю, делают ли они все сами или используют встроенную поддержку веб-архивов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top