2010/09/30

iOSでカスタムURLスキームを利用してアプリケーションを起動する方法について

先日、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スキームを利用する方法

基本的な流れは次の通りです。

  1. 対応アプリがあるかどうかをクラスUIApplicationのメソッドcanOpenURL:で調べる
    引数のURLの書式についてはアプリケーションによって異なりますので当該アプリケーションのドキュメントを参照してください。
  2. クラス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スキームを利用して他のアプリケーションを起動する方法について述べました。

関連項目

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。