08 Abr, 2013 16:35

Como registrar seu aplicativo para abrir arquivos externos

Registrando seu aplicativo para abrir arquivos

A primeira coisa a fazer é decidir quais tipos de arquivo ele irá suportar. Com essa lista em mãos, você precisará dos Uniform Type Identifiers (ou UTIs) de cada tipo. Uma extensa lista dos tipos padrão você encontra aqui.

No nosso exemplo, o aplicativo vai abrir documentos PDF (com.adobe.pdf), mas você poderá repetir o procedimento com imagens (public.image, public.jpeg, public.png, ...), textos (public.text, public.html, ...) ou qualquer arquivo (public.data).

Acesse o arquivo -Info.plist do seu projeto, localize ou crie a seção Document types (CFBundleDocumentTypes), adicione um item e preencha-o de maneira semelhante a abaixo.

Preenchendo o Info.plist para seu app abrir arquivos PDF

Em especial, observe o array LSItemContentTypes onde são preenchidos os UTIs dos arquivos que pretendemos abrir. Perceba também a propriedade LSHandlerRank. Ela pode assumir os valores Owner ou Alternate, sendo o primeiro quando seu aplicativo define o tipo especificado (como veremos a frente) e a segunda quando é apenas mais uma opção para abrir o arquivo. No nosso caso, Alternate é o valor indicado.

Feito isso e instalando seu aplicativo no aparelho, o iOS já está avisado que ele está pronto para abrir PDFs. Experimente abrir um PDF em outro aplicativo - Safari, p. ex. - e selecionar o botão "Abrir com...".

Seu app agora é uma opção para abrir PDFs

Excelente! Seu aplicativo (Mobits Docs) agora aparece na lista de possibilidades para abrir o PDF junto com o iBooks e outros. Se você o selecionar na lista, ele será imediatamente aberto. Mas espere! Como o aplicativo vai saber que ele está sendo carregado para abrir um determinado arquivo?

Mais uma vez, é fácil. No seu AppDelegate, basta implementar o método abaixo.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSLog(@"URL: %@", url);
    NSLog(@"Fonte: %@", sourceApplication);
    NSLog(@"annotation: %@", annotation);

    return YES;
}

O parâmetro mais importante é o url, pois é com ele que você vai conseguir abrir o arquivo enviado para o seu aplicativo. A técnica usada para abrir o arquivo vai depender do tipo de arquivo e da estratégia adotada. Por exemplo, o conteúdo do arquivo poderia ser lido para uma NSString, NSData, gravado direto no disco, etc.

Definindo seu próprio tipo

Abrir tipos padrão do sistema pode ser muito útil, mas você também pode criar seus próprios tipos para realizar diversas tarefas como criar um arquivo de configuração automática, exportar/importar sua base de dados, etc.

Para isso, edite mais uma vez seu Info.plist conforme abaixo:

Declarando meu UTI para o app

No nosso exemplo, estamos definindo um tipo "Mobits File" (UTTypeDescription), com UTI "br.com.mobits.file" (UTTypeIdentifier), em conformidade com o UTI "public.text" (UTTypeConformsTo) e extensão "mobits" (UTTypeTagSpecification > public.filename-extension).

Agora, o iOS já sabe da existência do nosso novo tipo de arquivo. Para que nosso aplicativo seja capaz de abri-lo, basta repetir os passos da seção acima e registrar o novo UTI (br.com.mobits.file) sendo que, desta vez, o LSHandlerRank deverá ser Owner, naturalmente.

Mais detalhes sobre a definição de tipos personalizados aqui.

Uma observação final: em ambas as configurações acima, eu sugeri que fossem feitas direto no Info.plist, mas nas última versões do XCode, é possível fazer essas configurações mais confortavelmente selecionando o nome do projeto no Project Navigator (Cmd-1), depois selecionando o target, em seguida a aba Info e, finalmente, preenchendo as guias "Document Types" e "Exported UTIs".

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.