Откройте.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.