Como você define o seu Cacau de aplicativos como o navegador padrão?
-
09-06-2019 - |
Pergunta
Como você define o seu Cacau de aplicativos como o navegador padrão?
Eu quero criar um aplicativo que é iniciado por padrão quando o usuário clica em um de HTTP ou HTTPS link em outros aplicativos (e-Mail, iChat, etc.).
Solução
Existem quatro passos para fazer um aplicativo que pode agir como o navegador da web padrão.As três primeiras etapas permitir que a sua aplicação para agir como uma função de rotina de tratamento para os esquemas de URL (HTTP e HTTPS) e a etapa final torna o padrão da função de rotina de tratamento para esses esquemas.
1) Adicione os esquemas de URL do seu aplicativo pode lidar com o seu aplicativo de informação.arquivo plist
Para adicionar suporte para http://
e https://
você precisa adicionar o seguinte ao seu aplicativo de informação.arquivo plist.Isso indica que o sistema operacional de que a aplicação é capaz de lidar com HTTP e URLs de HTTP.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>http URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>http</string>
</array>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>Secure http URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>https</string>
</array>
</dict>
</array>
2) Escreva um método de manipulador de URL
Este método será chamado pelo sistema operacional, quando quer usar o seu aplicativo para abrir um URL.Não importa qual objeto você adicionar esse método, que vai ser passado explicitamente para o Gerenciador de Eventos na próxima etapa.O método de manipulador de URL deve ser algo como isto:
- (void)getUrl:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
// Get the URL
NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
//TODO: Your custom URL handling code here
}
3) registra-se o método de manipulador de URL
Em seguida, informe o gerenciador de eventos que objeto e método para chamar, quando quer usar o aplicativo para carregar um URL.No código aqui, estou passada self
como o manipulador de eventos, supondo que estamos chamando de setEventHandler
do mesmo objeto que define o getUrl:withReplyEvent:
o método.
Você deve adicionar esse código em algum lugar no seu aplicativo de inicialização do código.
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em
setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
Alguns aplicativos, incluindo versões anteriores do Adobe AIR, use a alternativa WWW!/OURL AppleEvent para solicitar que um aplicativo abre URLs, de modo a ser compatível com os aplicativos, você deve também adicionar a seguinte:
[em
setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4) Defina o seu aplicativo como o navegador padrão
Tudo o que fizemos até agora, como dizem os que a sua aplicação é um navegador, agora precisamos fazer com que ele o navegador padrão.
Temos que usar os Serviços de Lançamento de API para fazer isso.Neste caso estamos definindo nosso aplicativo para ser o padrão da função de manipulador de HTTP e HTTPS links:
CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
//TODO: Check httpResult and httpsResult for errors
(Provavelmente o melhor é pedir a permissão do usuário antes de alterar o navegador padrão.)
Personalizado esquemas de URL
Vale lembrar que você também pode usar estes mesmos passos para lidar com o seu próprio personalizado esquemas de URL.Se você estiver criando um personalizado esquema de URL é uma boa idéia para baseá-lo em seu aplicativo do pacote identificador para evitar conflitos com outros aplicativos.Então, se o seu ID de um pacote é com.example.MyApp
você deve considerar o uso de x-com-example-myapp://
URLs.
Outras dicas
Se você quer apenas mudar o padrão de aplicativo auxiliar para http(s), você pode fazer isso nas preferências do Safari.Lá você vai encontrar um drop-down que permite que você selecione todos os registrados processador de aplicações http.Automaticamente o aplicativo definido como o navegador padrão consulte as instruções anteriores.