OS X でカスタム URL ハンドラーを構成するにはどうすればよいですか?

OS X でカスタム URL ハンドラーを構成するにはどうすればよいですか?

私は、次のようなカスタム URL ハンドラー / カスタム プロトコル ハンドラーについてオンラインでたくさん読んできました。

特定のプログラムがファイルを使用して特定のスキーム/プロトコルを処理できることをシステムに伝えることができるのはわかります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/>

しかし、同じ URL ハンドラーを開くことができるアプリケーションが複数ある場合、mailto:システムで使用するアプリケーションをどのように指定すればよいでしょうか?

のようなユーティリティへの参照がいくつかありましたが、More Internet preference pane作者のサイトからはもう入手できないようです。Google でオンラインで見つけましたが、少し不安定なようです。古い OSX (おそらく Tiger) 用に書かれたようです。

プロトコルおよびカスタム プロトコルの URL ハンドラーを設定する方法に関する情報を見つけることができませんでした。plist編集できるファイルがどこかにあると思いますが、Mountain Lion で適切に動作する、より新しく優れたユーティリティがあるのでしょうか?

答え1

探しているファイルは です~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

と呼ばれる配列を保持しLSHandlers、 を定義する Dictionary の子要素LSHandlerURLSchemeは に応じて変更できますLSHandlerRole。編集するには、[このバイナリ ファイルを変換][1] する必要があります。

このファイルを手動で編集する代わりに、Swiftデフォルトアプリこのアプリは、メンテナンスされていない RCDefaultApp の後継アプリですが、バグもいくつかあるようですので注意してください。

答え2

Apple OS X 10.10 (Yosemite) の現在の LaunchServices URL ハンドラー設定を一覧表示します。

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

答え3

2017 年 7 月更新: RCDefaultApp はlstoolmacOS 10.12 以降では動作しなくなりました。新しい解決策を見つける必要があります。

編集 2018年3月
私は見つけたSwiftデフォルトアプリただし、まだ High Sierra を使用していないためテストできません。


前の回答をさらに補足すると、コマンド ラインでこれを実行したい場合はlstool、 の下にある RCDefaultApp の中核である コマンドを使用できますRCDefaultApp.prefPane/Contents/Resources/lstool

使い方は簡単です:

[~]$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

答え4

実際にカスタム URL プロトコルの登録を簡素化するアプリケーションを書いたので、興味がある方はご覧ください。LinCastor というアプリケーションです (https://onflapp.github.io/blog/pages/LinCastor.html)。ハンドラは、AppleScript またはシェル スクリプト (Perl、Python など) として定義できます。

関連情報