強火で進め

このブログではプログラム関連の記事を中心に書いてます。こちらで( http://blog.livedoor.jp/tsuyobi-outdoor/ ) アウトドア関連の記事も書いてます。

URL schemeを使ってアプリを起動する(Xcode 4.2の場合)

以前、「URL schemeを使ってアプリを起動する」という記事を書きました。

URL schemeを使ってアプリを起動する - 強火で進め
http://d.hatena.ne.jp/nakamura001/20090305/1236267660

しかし、現在のXcodeだと指定する位置などが変わっているので現在のものに更新したものを書いておきます。

設定

まずは「プロジェクトファイル」→「TARGETS」と選択。

次にタブの「Info」を選択。

画面下部の「Add」アイコンをクリックし、「Add URL Type」を選択。

するとこの様な項目が追加されます(追加された項目を展開した状態)。

ここの「Identifier」と「URL Scheme」を設定します。

「Identifier」は「Bundle Identifier」と同様に他のアプリなどと被らない一意な文字列を指定して下さい。今回は「com.example.test」としました。

「URL Scheme」とはブラウザで使用されるURLの中の先頭部分に当たる URL: や mailto: 、ftp: などの事を言います。今回はここに独自定義を追加する形になるのでその様な既存のものとは異なる文字列を設定する必要が有ります。今回は「test」としました。

最終的な記述内容はこうなります。

実際に試してみる

上記の設定が終ったら以下の内容を AppDelegate.m に追加し、ビルドします。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    NSString* msg = [NSString stringWithFormat:@"[URL]%@\n[schame]%@\n[Query]%@", 
                     [url absoluteString], [url scheme], [url query]];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"debug"
                                                    message:msg
                                                   delegate:self
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil, nil];
    [alert show]; 
    
    return YES;
}

アプリのインストールが完了したらブラウザを起動し、アドレス欄に以下の文字列を入力します。

test://hoge/fuga?abc=123

※因みに以前はメールやSMSに投稿した時にリンク化させて簡単に起動させる方法が有りましたがセキュリティの観点からか現在のiOSではその様な方法は使えなくなっています。

するとアプリが起動し、この様なアラートが表示されます。それぞれの項目に意図したデータが入っているのが確認できます。