2011年4月14日木曜日

iPhoneとAndroidのURL Scheme起動設定方法

From Evernote:

iPhoneとAndroidのURL Scheme起動設定方法

iPhoneとAndroidのURL Scheme起動設定方法
ブラウザのリンクからアプリを起動する方法。
(及び他アプリからURL Schemeで起動する事も可能)


iPhone


<a href="babukuma:">アプリ起動</a>
のリンクで起動できる。パラメータを渡すのも可能。

<a href="babukuma:?a=1&b=2">アプリ起動</a>
<a href="babukuma://com.babukuma.demo.urlscheme/?a=1&b=2">アプリ起動</a>

起動時のデリゲート
iOS4.1までは
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
このデリゲートが呼ばれたが、
iOS4.2からは次のデリゲートが追加された。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

両方実装すると
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
このデリゲートが優先される。

簡単な例は。。。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"url=%@, sourceApplication=%@", [url absoluteString], sourceApplication); 
    returnYES;
}



Android

AndroidManifest.xml


<a href="abukuma://com.babukuma.demo.urlscheme">アプリ起動</a>
リンクで起動できる。パラメータを渡すのも可能。


<a href="babukuma://com.babukuma.demo.urlscheme/?a=1&b=2">アプリ起動</a>

パラメータ以外もPath、Port指定も可能。




ブラウザからアプリを起動する為のHTMLサンプル

ブラウザからアプリを起動するのは簡単にできるか、
ユーザがアプリを先にインストールしないブラウザでエラーページが表示されてしまう。
アプリがインストールされている場合はアプリを起動し、
インストールされてない場合はダウンロード先へ移動させたい。

参照したサイトのURLは忘れたけど、どこか外国のiPhone開発QAサイトでヒントを見つけて一応解決。