Para seu aplicativo, para a caixa de diálogo ‘Abrir com …’ disponível globalmente que outros aplicativos usam, você precisa:
- Registre seu aplicativo como tipos de arquivos de manipulação (por exemplo, imagens, PDFs, etc.)
- Implementar um método que é chamado em seu aplicativo quando outro aplicativo passa um arquivo para você
Para imagens:
1. Registre seu aplicativo como aceitando imagens adicionando dados ao arquivo plist.
Adicione CFBundleDocumentTypes ao plist (no Rakefile):
app.info_plist['CFBundleDocumentTypes'] = [{
"CFBundleTypeExtensions" => ["pdf"],
"CFBundleTypeName" => "public.pdf",
"CFBundleTypeIconFile" => "app.icns",
"LSItemContentTypes" => ["public.pdf"],
"CFBundleTypeRole" => "Editor", #or Viewer
"LSHandlerRank" => "Alternate"
},
{"CFBundleTypeExtensions" => ["png"],
"CFBundleTypeName" => "public.png",
"CFBundleTypeIconFile" => "app.icns",
"LSItemContentTypes" => ["public.png"],
"CFBundleTypeRole" => "Editor", #or Viewer
"LSHandlerRank" => "Alternate"
}]
Adicione UTImportedTypeDeclarations ao seu plist (no Rakefile):
app.info_plist['UTImportedTypeDeclarations'] = [{
"UTTypeConformsTo" => ["public.data"],
"UTTypeIdentifier" => "public.pdf",
"UTTypeTagSpecification" => {
"com.apple.ostype" => "PDF",
"public.mime-type" => "application\/pdf",
"public.filename-extension" => ["pdf"]
}}, {
"UTTypeConformsTo" => ["public.image"],
"UTTypeIdentifier" => "public.png",
"UTTypeTagSpecification" => {
"com.apple.ostype" => "PNG",
"public.mime-type" => "image\/png",
"public.filename-extension" => ["png"]
}
}]
end
Mais sobre esta etapa aqui: Registrando seu suporte de tipos de arquivo
2. Implementar aplicativo: openURL: sourceApplication: annotation: em seu app_delegate
Este método é chamado quer seu aplicativo já esteja aberto ou não. (Se seu aplicativo não estiver aberto, application: didFinishLaunchingWithOptions: é chamado primeiro.)
Isso é chamado quando outro aplicativo envia um arquivo para o seu aplicativo
def application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
#url.nsdata => data of the file passed
#e.g. open a new view controller
foo = MyImageManipulatorViewController.alloc.initWithURL(url)
# ...
true
end
Mais sobre esta etapa aqui: Abrindo tipos de arquivos suportados
Nota Você não pode adicionar seu aplicativo à lista de opções de compartilhamento que os aplicativos nativos de fotos e rolo da câmera usam.
Veja também
Visão geral de compartilhamento / abertura de documentos em aplicativos:
Sobre a interação de documentos
Outros tipos de documento:
CFBundleDocumentTypes