2013年7月18日木曜日

カスタムURLスキームを設定する方法

Xcodeで独自のカスタムURLスキームを設定する方法をメモ。

環境

  • Xcode : 4.6.2
  • iOS SDK : 6.1
  • デバッグ 実機 : iPod touch、バージョン6.1.3

URLスキームを設定する

独自URLスキームを使用するにはXcode側でいくつか作業する必要があります。

Xcodeでの設定

まず「TARGETS」->「info」->「URL Types」を選択します。



「URL Types」で以下のようにURLスキームを設定します。



"Identifier"、"URL Schemes"について「iOSアプリケーションプログラミングガイド」から解説を抜粋します。

Identifier

URLスキームの抽象名を含む文字列。一意性を確保するため、com.acme.myschemeのように、逆DNS形式の識別子を指定することをお勧めします。ここで指定した文字列は、アプリケーションのInfoPlist.stringsファイル内のキーとしても使われます。このキーの値は、人が読める形式のスキーム名です。

アプリを呼び出すための識別IDを指定するものです。
抜粋した解説に「一意性を確保するため、com.acme.myschemeのように、逆DNS形式の識別子を指定することをお勧めします。」とあるように、ユニークな文字列を指定することが決まりのようです。Bundle identifierを指定することが一般的のようです。

URL Schemes

URLスキームの名前(http、mailto、tel、smsなど)を含む文字列の配列。

登録したいスキーム名を指定するものです。
抜粋した解説に"文字列の配列"とあるように、複数指定が可能で、その際はカンマ(,)で区切って指定します。

以上で設定は終わりです。

設定したURLスキームを呼び出す方法

上で設定したスキームを呼び出すには以下のコードで行うことができます。
NSURL *myURL = [NSURL URLWithString: @"test-app.scheme://"];
[[UIApplication sharedApplication] openURL:myURL];
URLスキームを呼び出すにはSafariなどを起動するように、openURL:メソッドで行います。引数は、URL Schemesで指定した値に「://」を付けたものになります。

おまけ:アプリがインストールされているかを確認

URLスキームを使い、以下のようにしてアプリがインストールされているかの判定できます。
NSString *url = @"test-app.scheme://";
BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]];

if(canOpen == YES)
{
    NSLog("開けるよー");
}
else
{
    NSLog("開けないよー");
}
canOpenURL:メソッドを使ってその返り値で判定しています。

参考記事

カスタムURLスキームを利用する (3) - calmscape: //ソフトウェア開発部
URL schemeを使ってアプリを起動する - 強火で進め
iOSアプリにとりあえずでもカスタムURLスキームをつけるべし - Technology-Gym

0 件のコメント:

コメントを投稿