アプリケーション記述ファイルのxmlに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" と出力
}
});
####注意
- 他のアプリが同じ名前のスキームを登録していると、既存アプリが優先されてしまう
- StageWebViewではカスタムURIスキームを使用してURLを開くことができない
- AndroidのブラウザにカスタムURIスキームを直入力しても、アプリを起動できない