Comment définir votre application Cocoa comme navigateur web par défaut sur macOS
Créer un navigateur web peut sembler intimidant, mais que faire si vous souhaitez que votre application Cocoa joue ce rôle ? Définir votre application comme navigateur web par défaut sur macOS n’est pas seulement faisable, mais cela vous permet également d’améliorer l’expérience utilisateur en offrant des interactions fluides avec les liens HTTP et HTTPS. Dans cet article, nous allons parcourir les étapes essentielles pour y parvenir.
Le Problème
Lorsque les utilisateurs cliquent sur un lien web dans des applications comme Mail ou iChat, leur navigateur web par défaut se lance. Si vous développez une application Cocoa et que vous voulez qu’elle soit celle qui ouvre ces liens, vous devez configurer votre application pour gérer les liens HTTP et HTTPS et la définir comme le navigateur par défaut.
La Solution
Pour faire de votre application Cocoa le navigateur web par défaut, vous pouvez suivre ces quatre étapes :
1. Ajouter des schémas d’URL à Info.plist
de votre application
Votre première tâche est d’informer macOS que votre application peut gérer les requêtes HTTP et HTTPS. Cela se fait en modifiant le fichier Info.plist
de votre application. Voici comment procéder :
- Ouvrez le fichier Info.plist de votre application.
- Ajoutez le fragment XML suivant :
<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>
Avec cet ajout, vous déclarez que votre application peut gérer ces deux types de schémas d’URL.
2. Écrire une méthode de gestion des URL
Ensuite, vous devez créer une méthode qui sera déclenchée lorsque votre application est chargée d’ouvrir une URL. Voici un exemple simple :
- (void)getUrl:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
// TODO: Votre code personnalisé pour gérer l'URL ici
}
Dans cette méthode, vous mettrez éventuellement en œuvre la logique pour gérer l’URL une fois qu’elle est récupérée.
3. Enregistrer la méthode de gestion des URL
Maintenant que vous avez votre méthode de gestion des URL, vous devez l’enregistrer auprès du gestionnaire d’événements de macOS. Vous pouvez le faire en ajoutant le code suivant dans la section d’initialisation de votre application :
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
De plus, pour prendre en charge les anciennes applications, enregistrez-vous pour l’événement Apple WWW!/OURL :
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4. Définir votre application comme navigateur par défaut
Enfin, vous devez définir votre application comme gestionnaire par défaut pour les schémas HTTP et HTTPS en utilisant l’API des services de lancement. Ajoutez le code suivant :
CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
// TODO: Vérifiez httpResult et httpsResult pour les erreurs
Conseil : Il est recommandé de demander la permission à l’utilisateur avant de changer les paramètres de leur navigateur par défaut.
Schémas d’URL personnalisés
En plus des schémas d’URL standard, vous pouvez également mettre en œuvre vos propres schémas personnalisés. Pour éviter les conflits avec d’autres applications, il est judicieux de baser votre schéma personnalisé sur l’identifiant de votre application. Par exemple, si votre ID de bundle est com.example.MyApp
, envisagez d’implémenter des configurations comme x-com-example-myapp://
.
Conclusion
En suivant ce guide simple, vous pouvez transformer votre application Cocoa en navigateur web par défaut pour les utilisateurs sur macOS. Cela améliore non seulement l’utilité de l’application, mais offre également une meilleure expérience web intégrée pour les utilisateurs. N’oubliez pas de toujours prioriser le consentement de l’utilisateur lorsque vous modifiez les paramètres par défaut pour une transition plus fluide.
N’hésitez pas à poser d’autres questions ou à laisser des commentaires si vous rencontrez des problèmes lors de l’implémentation !