AIRアプリでカスタムURIスキームを設定する方法
カスタムURIスキームとは?
URIスキームとは、URI(URL)の先頭の"http"や"ftp"、"mailto"などのこと。
"http"ならWebへのアクセス、"ftp"なFTPでのファイル送受信、"mailto"ならメール送信を行うことを示しています。
iOSやAndroidではURIスキームをアプリごと独自に定義することができ、これを使用することで
- ブラウザからのアプリを起動
- アプリからの連携
が行うことができます。
たとえば、iPhoneにTwitterの公式アプリをインストールされている状態で
twitter://mentions
とブラウザのアドレスバーに入力すると、Twitterのアプリが起動し「みんなの反応」が開きます。
AIRでの設定方法
AIRで作っているアプリに、カスタムURIスキームを設定する場合、アプリケーション記述ファイルに記述することで設定ができます。
AndroidとiOSそれぞれ別々に定義を記述する必要があります。
Androidの場合
<android> <manifestAdditions> <![CDATA[ <manifest> <application> <activity> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="test-app"/> </intent-filter> </activity> </application> </manifest> ]]> </manifestAdditions> </android>
iOSの場合
<iPhone> <InfoAdditions><![CDATA[ <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>test-app</string> </array> <key>CFBundleURLName</key> <string>jp.co.piisu.test-app</string> </dict> </array> ]]></InfoAdditions> </iPhone>
以上で、
<a href="test-app://arg1=funya&arg2=kurage">アプリを起動</a>
のようなリンクをふんだ場合に、アプリが起動されるようになります。
パラメータ読み込み
NativeApplicationオブジェクトのinvokeイベントを通じて読み込むことができます。
var native_app:NativeApplication = NativeApplication.nativeApplication; native_app.addEventListener(InvokeEvent.INVOKE, function(evt:InvokeEvent):void { //通常起動の場合もinvokeイベントが発生し、この場合argumentsのlengthは0なのでチェックを行う if(evt.arguments.length > 0) { trace(evt.arguments[0].toString()); // "test-app://arg1=funya&arg2=kurage" と出力 } });