So setzen Sie Ihre Cocoa-Anwendung als Standard-Webbrowser in macOS
Einen Webbrowser zu erstellen, mag einschüchternd erscheinen, aber was ist, wenn Sie möchten, dass Ihre Cocoa-Anwendung diese Rolle übernimmt? Ihre Anwendung als Standard-Webbrowser in macOS festzulegen, ist nicht nur machbar, sondern ermöglicht es Ihnen auch, das Benutzererlebnis durch nahtlose Interaktionen mit HTTP- und HTTPS-Links zu verbessern. In diesem Blogbeitrag werden wir die wesentlichen Schritte durchgehen, um dies zu erreichen.
Das Problem
Wenn Benutzer auf einen Weblink in Anwendungen wie Mail oder iChat klicken, wird ihr Standard-Webbrowser gestartet. Wenn Sie eine Cocoa-Anwendung entwickeln und möchten, dass sie die Links öffnet, müssen Sie Ihre App so konfigurieren, dass sie HTTP- und HTTPS-Links verarbeitet und sie als Standardbrowser festlegt.
Die Lösung
Um Ihre Cocoa-Anwendung zum Standard-Webbrowser zu machen, können Sie diese vier Schritte befolgen:
1. Fügen Sie URL-Schemata zur Info.plist Ihrer Anwendung hinzu
Ihr erster Schritt besteht darin, macOS mitzuteilen, dass Ihre Anwendung HTTP- und HTTPS-Anfragen verarbeiten kann. Dies geschieht durch die Änderung der Info.plist
-Datei Ihrer Anwendung. So machen Sie das:
- Öffnen Sie die Info.plist-Datei Ihrer Anwendung.
- Fügen Sie den folgenden XML-Schnipsel hinzu:
<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>Sichere http URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>https</string>
</array>
</dict>
</array>
Mit dieser Ergänzung erklären Sie, dass Ihre App beide Arten von URL-Schemata verarbeiten kann.
2. Schreiben Sie eine URL-Handler-Methode
Als nächstes müssen Sie eine Methode erstellen, die ausgelöst wird, wenn Ihre Anwendung gebeten wird, eine URL zu öffnen. Hier ist ein einfaches Beispiel:
- (void)getUrl:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
// TODO: Ihr benutzerdefinierter URL-Verarbeitungscode hier
}
In dieser Methode implementieren Sie schließlich die Logik zur Verarbeitung der URL, nachdem sie abgerufen wurde.
3. Registrieren Sie die URL-Handler-Methode
Jetzt, da Sie Ihre URL-Handler-Methode haben, müssen Sie sie beim macOS Event Manager registrieren. Sie können dies tun, indem Sie den folgenden Code in den Initialisierungsabschnitt Ihrer Anwendung einfügen:
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
Zusätzlich, um ältere Anwendungen zu unterstützen, registrieren Sie das WWW!/OURL Apple Event:
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4. Setzen Sie Ihre App als Standardbrowser
Schließlich müssen Sie Ihre App als Standard-Handler für HTTP- und HTTPS-Schemata mithilfe der Launch Services API festlegen. Fügen Sie den folgenden Code hinzu:
CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
// TODO: Überprüfen Sie httpResult und httpsResult auf Fehler
Hinweis: Es ist eine gute Praxis, den Benutzer um Erlaubnis zu bitten, bevor Sie seine Standardbrowser-Einstellungen ändern.
Benutzerdefinierte URL-Schemata
Zusätzlich zu standardmäßigen URL-Schemata können Sie auch Ihre eigenen benutzerdefinierten Schemata implementieren. Um Konflikte mit anderen Anwendungen zu vermeiden, ist es ratsam, Ihr benutzerdefiniertes Schema auf der Bundle-ID Ihrer App basieren zu lassen. Wenn beispielsweise Ihre Bundle-ID com.example.MyApp
ist, sollten Sie in Betracht ziehen, Konfigurationen wie x-com-example-myapp://
zu implementieren.
Fazit
Indem Sie dieser unkomplizierten Anleitung folgen, können Sie Ihre Cocoa-Anwendung zum Standard-Webbrowser für Benutzer auf macOS machen. Dies verbessert nicht nur den Nutzen Ihrer Anwendung, sondern bietet auch ein besseres, integriertes Web-Erlebnis für Benutzer. Denken Sie daran, immer die Zustimmung der Benutzer zu priorisieren, wenn Sie Standard-Einstellungen ändern, um einen reibungsloseren Übergang zu gewährleisten.
Zögern Sie nicht, weitere Fragen zu stellen oder Kommentare zu hinterlassen, falls Sie während der Implementierung auf Probleme stoßen!