先日、ATOK Pad for iPhoneを購入しました。開発者向け情報のページに他のアプリケーションとの連携が可能なことが書かれていたからです。そのページによると、ATOK PadのカスタムURLスキームとペーストボードを利用するようですが、どちらもプログラミングで利用したことがなかったので、まずカスタムURLスキームについて調べてみることにしました。
この記事ではObjective-CからカスタムURLスキームを利用して他のアプリケーションを起動する方法について述べます。当然のように、XcodeとiOS SDKは導入済みであるとします。
カスタムURLスキーム(Custom URL schemes)とは
他のアプリケーションを利用するための方法です。Unix的にはsystem(3)の引数をURLとして表現したものと思えばよいでしょう。
URLでアプリケーションが起動するようになるため、Safariのアドレスバーに入力しても起動させることができます。例えば、Twitter for iPhoneがインストールされている状態で、Safariのアドレスバーに「twitter:http://safx-dev.blogspot.com/」と入力すると、Twitter for iPhoneが起動してアドレスが入力されています。
また、カスタムURLスキームを利用したSafariのブックマークレットがいくつも作られています (例えば、Safariで閲覧中のページのURLをTwitter for iPhoneへ転送するブックマークレットなど)。
Objective-CからカスタムURLスキームを利用する方法
基本的な流れは次の通りです。
- 対応アプリがあるかどうかをクラスUIApplicationのメソッド
canOpenURL:
で調べる
引数のURLの書式についてはアプリケーションによって異なりますので当該アプリケーションのドキュメントを参照してください。 - クラスUIApplicationのメソッド
openURL:
でアプリケーションを起動
例えば、先程のTwitterの例は次のようになります。
NSString* url = [NSString stringWithFormat:@"twitter:%@", location]; NSURL* twitterUrl = [NSURL URLWithString:url]; if ([[UIApplication sharedApplication] canOpenURL:twitterUrl]) { [[UIApplication sharedApplication] openURL:twitterUrl]; }
Apple純正アプリケーションのURLスキーム
Apple純正アプリケーションのURLスキームについてはApple URL Scheme Referenceに記載があります。例えば、電話を起動するコードは次のようになります。
NSURL* url = [NSURL URLWithString:@"tel:03-xxxx-yyyy"]; [[UIApplication sharedApplication] openURL:url];
まとめ
Objective-CからカスタムURLスキームを利用して他のアプリケーションを起動する方法について述べました。
関連項目
- safx: iOSで独自カスタムURLスキームを設定する方法について
- safx: カスタムURLスキームでのアプリケーション切替時の画像の設定
- safx: カスタムURLスキームと名前付きペーストボードを利用したATOK Pad for iPhoneとの連携
- App Lookup いろいろなアプリのCustom URL Schemeがあります
- IPhone URL Schemes - akosma wiki いろいろなアプリのCustom URL Schemeがあります
- Apple URL Scheme Reference
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。