predeterminado navegador cual objective-c cocoa

objective-c - cual es el navegador predeterminado de linux



¿Cómo configuras tu aplicación Cocoa como el navegador web predeterminado? (2)

¿Cómo configuras tu aplicación Cocoa como el navegador web predeterminado?

Deseo crear una aplicación que se inicie de manera predeterminada cuando el usuario haga clic en un enlace HTTP o HTTPS en otras aplicaciones (Correo, iChat, etc.).


Hay cuatro pasos para crear una aplicación que pueda funcionar como el navegador web predeterminado. Los primeros tres pasos permiten que su aplicación actúe como un controlador de roles para los esquemas de URL relevantes (HTTP y HTTPS) y el último paso lo convierte en el controlador de roles predeterminado para esos esquemas.

1) Agregue los esquemas de URL que su aplicación puede manejar al archivo info.plist de su aplicación

Para agregar soporte para http:// y https:// , deberá agregar lo siguiente al archivo info.plist de su aplicación. Esto le dice al sistema operativo que su aplicación es capaz de manejar URL HTTP y 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) Escribe un método de manejo de URL

El SO llamará a este método cuando quiera usar su aplicación para abrir una URL. No importa a qué objeto agregue este método, que se pasará explícitamente al Administrador de eventos en el siguiente paso. El método del manejador de URL debería verse más o menos así:

- (void)getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent { // Get the URL NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; //TODO: Your custom URL handling code here }

3) Registre el método del manejador de URL

Luego, dígale al administrador de eventos a qué objeto y método llamar cuando quiera usar su aplicación para cargar una URL. En el código aquí me pasé como el controlador de eventos, suponiendo que estamos llamando a setEventHandler desde el mismo objeto que define el getUrl:withReplyEvent: .

Debe agregar este código en algún lugar del código de inicialización de su aplicación.

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

Algunas aplicaciones, incluidas las versiones anteriores de Adobe AIR, utilizan el evento alternativo WWW! / OURL AppleEvent para solicitar que una aplicación abra URL, por lo que para ser compatible con esas aplicaciones también debe agregar lo siguiente:

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

4) Configure su aplicación como el navegador predeterminado

Todo lo que hemos hecho hasta ahora le dice al sistema operativo que su aplicación es un navegador , ahora tenemos que convertirlo en el navegador predeterminado .

Tenemos que usar la API de servicios de inicio para hacer esto. En este caso, configuramos nuestra aplicación para que sea el controlador de roles predeterminado para los enlaces HTTP y HTTPS:

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

(Probablemente sea mejor pedir permiso al usuario antes de cambiar su navegador predeterminado).

Esquemas de URL personalizados

Vale la pena señalar que también puede utilizar estos mismos pasos para manejar sus propios esquemas de URL personalizados. Si está creando un esquema de URL personalizado, es una buena idea basarlo en el identificador del paquete de su aplicación para evitar conflictos con otras aplicaciones. Por lo tanto, si su ID de paquete es com.example.MyApp , debería considerar usar URL de x-com-example-myapp:// .


Si solo desea cambiar la aplicación de ayuda predeterminada para http (s), puede hacerlo en las preferencias de Safari. Allí encontrará un menú desplegable que le permitirá seleccionar todas las aplicaciones de controlador registradas para http. Para que la aplicación se configure automáticamente como navegador predeterminado, consulte las instrucciones anteriores.