如何在 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似乎不再可以從作者的網站上獲得。我確實透過谷歌搜尋在網路上找到了它,但它似乎有點不穩定 - 就像它是為較舊的 OSX - 也許是 Tiger 編寫的。

我無法找到有關如何設定協定和自訂協定的 URL 處理程序的資訊。我假設某個地方有一個plist我可以編輯的檔案 - 或者也許有一個更新、更好的實用程式可以與 Mountain Lion 配合良好?

答案1

您尋找的文件是~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist.

它保存一個名為 的數組LSHandlers,定義 的子字典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 月更新:RCDefaultApplstool不再適用於 macOS 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 或 shell 腳本(可以是 perl、python 或其他腳本)。

相關內容