38

Mac上のアプリケーションにカスタムプロトコルを登録しようとしています。つまり、次のようになります。

  1. ユーザーが「abcdef:// some / url/here」のリンクをクリックします
  2. インストールされたアプリケーションは、最初のパラメータとして渡された上記の文字列で起動されます

この質問の情報を使用して、Windowsでこれを正常に実行しました。

独自のURLプロトコルを作成するにはどうすればよいですか?(例::// ...)

ブラウザに依存しない、つまりOSレベルの何かを見つけたいと思います。また、シェルスクリプトを使用してこの登録を自動化したいので、GUIを使用せずにこれを行う方法があるといいのですが。

ありがとう!

4

7 に答える 7

23

私はそれを使用する機会がありませんでしたが、しばらく前にOS X URLハンドラーをブックマークして、まさにあなたが探しているものであるローカルファイルへのリンクを開きました。

リンクされた手順の重要な部分はCFBundleURLTypes、スキームを説明するアプリケーションのInfo.plistに適切なものを追加することです。そこに示されている例は次のようになります。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Local File</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>local</string>
        </array>
    </dict>
</array>
于 2009-01-23T02:13:01.063 に答える
21

Mac では、これは AppleScript で簡単に実行できます。最も詳細な説明は、この記事Mac で Web ページ リンクからスクリプトを起動する にあります。このページには、完全なウォークスルーと、ダウンロードできる完全な動作例が含まれているので、読んでみたいと思います。

基本的に、スクリプトでイベント ハンドラーを作成します。

on open location this_URL
    display dialog "I'm doing something with this URL: " & return & this_URL
end open location

次に、それをアプリケーションとして保存します。次に、Finder で [パッケージの内容を表示] を使用して Info.plist を編集します。アプリにいくつかのプロパティを追加して、アプリをプロトコルのハンドラーとして登録します。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Cliff's handler</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>abcdef</string>
        </array>
    </dict>
</array>
于 2010-09-13T21:02:14.100 に答える
7

今日の時点で、Mac でこの問題を最小限のオーバーヘッドで解決する最善の方法は、コマンド ラインdutiを使用することです。これにより、非常に単純なテキスト ファイルですべての関連付けを定義できます。

brew install duti

2 つのことが必要になります。関連付けるアプリの最初のバンドル ID:

mdls -name kMDItemCFBundleIdentifier /Applications/MacVim.app

ファイル タイプの 2 番目の UTI であるApple はリストを提供していますが、次のようにアプリでサポートされている UTI を調べることもできます。

mdls -name kMDItemContentTypeTree /Applications/MacVim.app

システムのどこかに、バンドル ID を UTI に関連付けるテキスト ファイルを作成します。

# ~/.default-apps.duti
#
# bundle id       UTI                  role
com.apple.Safari  public.html          all
org.vim.MacVim    txmt
org.vim.MacVim    public.ruby-script

txmt のような URL ハンドラーと、Ruby スクリプトのようなファイルの種類を関連付けることができることに注意してください。

そのファイルでは、すべてのアプリの設定を追跡し、完全な新規インストールの直後、または実行中の他の Mac でアカウントを取得したときにそれらを再現します。

duti ~/.default-apps.duti
于 2014-09-02T11:40:43.563 に答える
5

ジェイの回答のリンクされたページの重要な部分は、Info.plistのエントリです。

Launch Servicesを使用すると、特定のURLスキームを処理できる唯一のアプリである場合は、このアプリが自動的に開きます。それ以外の場合は、チャーリー・マーティンが説明するトリックを使用する必要があります。

実行する必要のあるデフォルトのコマンドが何であるか、またはそれがlaunchctlコマンドであるかどうかはわかりません。

于 2009-01-23T02:33:41.007 に答える
4

詳細を掘り下げるのは難しいですが、 RCDefaultAppと呼ばれる設定ペインがあり、それを処理します。私はまだそれがどのように機能するか知りたいです、掘り続けます。

于 2009-01-23T02:04:19.257 に答える