Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

XojoアプリでカスタムURLスキーマを使う方法(Mac OSX編)

カスタムURLスキーマというのは xojo://〜 と言ったURLでアプリケーションを起動できる仕組みです。iOSアプリ間におけるデータ連係などでよく使われています。

今回はそれをMac OSXアプリで実装する方法を紹介します。

新しいプロジェクトを作成する

この時、アプリケーション識別子を設定しますので、覚えておきましょう(例:com.example.urlscheme)。

UIを変更する

今回はテストとして、ウィンドウにテキストフィールドを追加しておきます。名前は EditField1 とします。

f:id:moongift:20160822112747p:plain

アプリケーションのイベントハンドラを設定する

Appのイベントハンドラを設定します。ハンドラはHandleAppleEventです。

コードは次の通りです。カスタムURLスキーマで渡される文字列を先ほど追加したテキストフィールドに表示します。

if eventClass = "GURL" and eventID = "GURL" then
  dim s as string = theEvent.StringParam("----")
  s = DecodeURLComponent(s)
  window1.EditField1.text = s
end if

アプリをビルドする

普通にアプリをビルドします。実行ではないので注意してください。

info.plistを編集する

ビルドしたアプリの内容を見て(パッケージの内容を表示、を選択します)、 Contents/Info.plist をテキストエディタで開きます。

f:id:moongift:20160822112805p:plain

</dict> の上に次のように追加します。 com.example.urlscheme は最初に決めたアプリケーション識別子になります。helloがURLスキーマになりますので、好きな文字に変更してください。

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>com.example.urlscheme</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>hello</string>
    </array>
  </dict>
</array>

アプリケーションを一度起動する

アプリケーションを起動することでURLスキーマが認識されます。後は終了しても大丈夫です。

Safariから実行する

後は任意のアプリケーションから実行できますが、例えばSafariのURLに次のように記述してエンターキーを押してみましょう。

hello://world

そうするとアプリケーションが立ち上がり、URLで指定した文字列がテキストフィールドに入っているはずです。

f:id:moongift:20160822112816p:plain


カスタムURLスキーマを利用することでアプリケーション間連携ができるようになったり、OAuth2のコールバックが受け取れるようになります。ぜひ活用してください。

注意点としてはアプリケーションをビルドする度に更新されてしまいます。専用のコマンド(sedなどを使って)を用意しておき、ビルド後に自動で書き換えるのが良さそうです。

via MBS Real Studio Plugin Tutorial Videos - URL Scheme