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]해야 합니다.

이 파일을 수동으로 편집하는 대신 다음을 사용할 수 있습니다.SwiftDefaultApps. 이 앱은 유지 관리되지 않는 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월 수정
나는 찾았다SwiftDefaultApps하지만 아직 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 등)로 정의할 수 있습니다.

관련 정보