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.).

Foi útil?

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.

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