Pregunta

¿Cómo fijar su Cacao de aplicaciones como el navegador web por defecto?

Quiero crear una aplicación que se inicia por defecto cuando el usuario hace clic sobre HTTP o HTTPS enlace en otras aplicaciones (Mail, iChat, etc.).

¿Fue útil?

Solución

Hay cuatro pasos para hacer una aplicación que puede actuar como navegador web por defecto.Los tres primeros pasos que permiten su aplicación a actuar como una función de controlador de los correspondientes esquemas de URL (HTTP y HTTPS) y el paso final hace la función predeterminada de controlador para estos regímenes.

1) Agregar los esquemas de URL de tu aplicación puede manejar a su solicitud de información.archivo plist

Para agregar el soporte para http:// y https:// sería necesario agregar el siguiente a su solicitud de información.plist archivo.Esto le dice al sistema operativo que la aplicación es capaz de manejar HTTP y Url 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) Escribir un método de controlador de URL

Este método será llamado por el sistema operativo cuando se quiere utilizar la aplicación para abrir una dirección URL.No importa que el objeto de agregar que este método, que va a ser explícitamente aprobado para el Gestor del Evento en el siguiente paso.La dirección URL de controlador método debería ser algo como esto:

- (void)getUrl:(NSAppleEventDescriptor *)event 
    withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
  // Get the URL
  NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject] 
    stringValue];

  //TODO: Your custom URL handling code here
}

3) Registrar la URL del método de control de

A continuación, indicar el gestor de eventos que objeto y el método al que se llama cuando quiere usar la aplicación para cargar una dirección URL.En el código aquí estoy pasado self como el controlador de eventos, suponiendo que estamos llamando setEventHandler desde el mismo objeto que define el getUrl:withReplyEvent: método.

Se debe añadir este código en algún lugar de la aplicación de su código de inicialización.

NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em 
  setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:kInternetEventClass 
  andEventID:kAEGetURL];

Algunas aplicaciones, incluyendo las primeras versiones de Adobe AIR, el uso de la alternativa WWW!/OURL AppleEvent para solicitar que se abre una aplicación de Url, así que, para ser compatible con las aplicaciones también debe agregar la siguiente:

[em
  setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:'WWW!' 
  andEventID:'OURL'];

4) Establecer la aplicación como el explorador predeterminado

Todo lo que hemos hecho hasta ahora, como dijo el OS que su aplicación es un navegador, ahora tenemos que hacer el explorador predeterminado.

Tenemos que utilizar el Lanzamiento de la API de Servicios para ello.En este caso estamos configuración de nuestra aplicación a la función predeterminada de controlador para HTTP y HTTPS enlaces:

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

(Es probablemente la mejor manera de pedir el permiso del usuario antes de cambiar su navegador por defecto.)

Esquemas de URL personalizados

Vale la pena señalar que también se pueden utilizar estos mismos pasos para manejar sus propios esquemas de URL.Si vas a crear una URL personalizada esquema es una buena idea a la base de la aplicación identificador del paquete para evitar conflictos con otras aplicaciones.Así que si su ID de paquete es com.example.MyApp usted debe considerar el uso de x-com-example-myapp:// Direcciones url.

Otros consejos

Si sólo desea cambiar el valor predeterminado helper de la aplicación para http(s), puede hacerlo en las preferencias de Safari.Allí encontrará un menú desplegable que le permitirá seleccionar todos los registrados controlador de aplicaciones para http.Para que automáticamente la aplicación a sí mismo como el navegador predeterminado consulte las instrucciones anteriores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top