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.

Foi útil?

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/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top