Wie konfiguriere ich benutzerdefinierte URL-Handler unter OS X?

Wie konfiguriere ich benutzerdefinierte URL-Handler unter OS X?

Ich habe online viel über benutzerdefinierte URL-Handler/benutzerdefinierte Protokoll-Handler gelesen, wie zum Beispiel:

Ich verstehe, dass man dem System mit der Datei mitteilen kann, dass ein bestimmtes Programm ein bestimmtes Schema/Protokoll verarbeiten kann Info.plist:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Local File</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>local</string>
        </array>
    </dict>
</array>
<key>NSUIElement</key>
<true/>

Wenn es jedoch mehrere Anwendungen gibt, die denselben URL-Handler öffnen können, wie mailto:geben Sie beispielsweise an, welchen das System verwenden soll?

Es gab einige Verweise auf Dienstprogramme wie das More Internet preference pane, das auf der Website des Autors nicht mehr verfügbar zu sein scheint. Ich habe es zwar online durch Googeln gefunden, aber es scheint ein bisschen wackelig zu sein – als wäre es für ein älteres OSX geschrieben worden – vielleicht Tiger.

Ich konnte keine Informationen dazu finden, wie man den URL-Handler für Protokolle und benutzerdefinierte Protokolle einstellt. Ich gehe davon aus, dass es plistirgendwo eine Datei gibt, die ich bearbeiten kann – oder vielleicht gibt es ein neueres, besseres Dienstprogramm, das gut mit Mountain Lion funktioniert?

Antwort1

Die gesuchte Datei ist ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

Es enthält ein Array namens LSHandlersund die Dictionary-Untergeordneten, die ein definieren, LSHandlerURLSchemekönnen entsprechend mit geändert werden LSHandlerRole. Sie müssen [diese Binärdatei konvertieren][1], um sie bearbeiten zu können.

Anstatt diese Datei manuell zu bearbeiten, können Sie verwendenSwiftDefaultApps. Beachten Sie, dass diese App ein Nachfolger der nicht mehr gepflegten RCDefaultApp ist, aber auch einige Fehler zu haben scheint.

Antwort2

Auflistung der aktuellen LaunchServices-URL-Handler-Einstellungen unter Apple OS X 10.10 (Yosemite):

defaults read com.apple.LaunchServices/com.apple.launchservices.secure

Antwort3

Update Juli 2017: RCDefaultApp lstoolfunktioniert nicht mehr unter macOS 10.12 oder höher. Wir müssen eine neue Lösung finden.

Bearbeiten März 2018
ich fandSwiftDefaultAppskann es aber nicht testen, da ich noch nicht auf High Sierra bin.


Als Erweiterung der vorherigen Antwort: Wenn Sie dies über die Befehlszeile tun möchten, können Sie den lstoolBefehl verwenden, der den Kern von RCDefaultApp bildet und unter zu finden ist RCDefaultApp.prefPane/Contents/Resources/lstool.

Die Verwendung ist unkompliziert:

[~]$lstool --help
Usage:

lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps

-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up

Antwort4

Ich habe tatsächlich eine Anwendung geschrieben, die die Registrierung benutzerdefinierter URL-Protokolle vereinfacht, falls jemand Interesse hat. Sie heißt LinCastor (https://onflapp.github.io/blog/pages/LinCastor.html). Handler können als AppleScript oder Shell-Skript (das kann Perl, Python oder was auch immer sein) definiert werden.

verwandte Informationen