Abra um .webarchive no iphone?
-
03-07-2019 - |
Pergunta
Alguém sabe se você pode programaticamente abrir uma .webarchive no iPhone? A .webarchive é a maneira de embalagem até uma página do Safari e está associado recursos em um único arquivo.
Eu tentei criar um e navegando para um link para um em safari móvel, mas não funcionou ....
Nota: Eu estava meio esperando que isso poderia ser feito sem um aplicativo de terceiro partido, uma vez que seria uma boa maneira de empacotar um WebApp para uso no iPhone sem a necessidade de uma ferramenta de terceiros.
Solução
webarchive é suportado no iOS. Basta carregá-lo em UIWebView. Ele simplesmente funciona!
para carregar um webarchive em seu pacote, basta fazer
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
webview é o seu UIWebView
Outras dicas
a .webarchive é apenas um plist; Teoricamente, você pode lê-lo usando NSPropertyListSerialization e, em seguida, construir uma estrutura de arquivos local no telefone, depois a bomba que em um UIWebView. Ou o uso AirSharing.
A expansão um pouco sobre as sugestões acima, se você só quer agarrar o HTML, o seguinte trecho de código pode ser um bom ponto de partida. Ao inspecionar o dicionário webMainResource você pode extrair outro material também, como imagens.
#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 no iPhone vai abrir arquivos webarchive, mas não tenho idéia se eles estão fazendo tudo sozinhos ou usando o suporte webarchive nativa.
Consulte http://www.avatron.com/products/