第 9 章 待ち受けアプリケーション
11.4 iアプリ連携起動
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
● 外部機器から起動コマンド(vTriggerオブジェクト)を受信するためには、ユーザーはあらかじめ携帯電話 の赤外線ポートへの通電操作を行っている必要があります。赤外線ポートへの通電操作の方法はメーカーに より異なります。
● 外部機器から起動されたiアプリの動作が終了すると、待ち受け状態に復帰します。ただし、外部機器から 起動されたiアプリをユーザーが強制終了した場合、iアプリ終了後にどのような状態に移るかはメーカー により異なります。
● 外部機器からvTriggerオブジェクトを携帯電話に送信する際、そのvTriggerオブジェクトのNameヘッダの 値は末尾(拡張子)が".vtg"となるようにしてください。携帯電話は、受信したオブジェクトの名前の拡張 子が".vtg"である場合に、そのオブジェクトをvTriggerオブジェクトと認識します。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
図 18: 連携モードにおける起動元iアプリから起動先iアプリへのパラメータ授受
パラメータは最大 16 個(パラメータ名と値の組み合わせで 16 セット)まで指定することができま す。また、指定するパラメータ名と値の長さの合計は最大 20480 バイトに制限されます(バイト数 はデフォルトエンコーディングで評価されます)。
なおiアプリ連携起動を行うiアプリは、ADF の LaunchApp キーでiアプリ連携起動を行うこ とを宣言(値"yes"を設定)する必要があります。この宣言を行っていないiアプリは、iアプリ 連携起動を行うことはできません。
注意事項:
● 起動元iアプリのADF URLと起動先iアプリのADF URLのホスト名は同一でなければなりません。また、
起動元iアプリと同一のADF URLを持つiアプリを起動することはできません。
● ダウンロード即起動iアプリ、および非活性化状態の待ち受けアプリケーションからはこの機能を使用する ことはできません。
● 起動先iアプリが起動される際、起動元iアプリは終了します。
● 起動先iアプリの動作が終了すると、携帯電話は待ち受け状態に復帰します。ただし、起動先iアプリをユ ーザーが強制終了した場合、iアプリ終了後にどのような状態に移るかはメーカーにより異なります。
● 起動先iアプリが待ち受けアプリケーションであっても、iアプリ連携起動で起動された場合は待ち受け起 動ではなく通常起動となります。
● 起動元iアプリがトラステッドiアプリの場合、起動先iアプリもトラステッドiアプリでなければなりま せん。
【DoJa-5.0】
DoJa-4.xプロファイル以前のプロファイルでは、iアプリを連携起動しようとした際には起動元iアプリが一
旦サスペンド状態に入り、iアプリの起動確認を行うためのダイアログがシステムにより表示されます。これ
に対しDoJa-5.0プロファイル以降では、この起動確認は行われません。
【DoJa-5.1】
連携モードでのiアプリ連携起動について、起動元iアプリから起動先iアプリに渡すことのできるパラメー タの長さに関する制限はDoJa-5.1プロファイルにて緩和されました。DoJa-5.1プロファイル以降ではパラメー タ名と値の長さの合計で20480バイトまでのパラメータを渡すことができますが、DoJa-5.0プロファイル以前 ではこの制限は255バイトまでとなっています。
String[] args = new String[5];
// 起動先iアプリのADF URL設定
args[0] = "http://www.nttdocomo.co.jp/app.jam"
// パラメータ設定
args[1] = "Param1"; // 1つ目のパラメータの名前 args[2] = "i-mode"; // 1つ目のパラメータの値 args[3] = "Param2"; // 2つ目のパラメータの名前 args[4] = "iアプリ"; // 2つ目のパラメータの値 // iアプリ連携起動(連携モード)
IApplication.getCurrentApp().launch(
IApplication.LAUNCH_IAPPLI, args);
String param1, param2;
// param1には"i-mode"が格納される param1 = IApplication.getCurrentApp().
getParameter("Param1");
// param2には"iアプリ"が格納される param2 = IApplication.getCurrentApp().
getParameter("Param2");
起動
※起動元iアプリでのパラメータ設定 ※起動先iアプリでのパラメータ取得
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
11.4.2 ランチャーモードによるiアプリ連携起動
ランチャーモードによるiアプリ連携起動を行う場合、開発者は以下の 2 つの処理を起動元iアプ リ(以下ランチャーiアプリとします)に実装します。
なお連携モードと同様、ランチャーモードでのiアプリ連携起動を行う場合も、ADF の
LaunchApp キーでiアプリ連携起動を行うことを宣言(値"yes"を設定)する必要があります。
(A) 起動先iアプリのエントリIDの取得
ランチャーモードでiアプリを起動するには、その携帯電話にダウンロードされている各iアプリと1対1に対応 付けられているエントリIDを使用します。エントリIDはランダムな整数値であり、有効なエントリIDを得るた めにはユーザーによるiアプリ選択プロセスを経る必要があります(アプリケーションプログラムが無効なエント リIDを指定してiアプリの起動を試みた場合、iアプリ実行環境はユーザーに警告を表すダイアログを表示しま す)。iアプリ選択プロセスは、com.nttdocomo.system.ApplicationStoreクラスを使用して行います。
このクラスのstaticメソッドselectEntry()を呼び出すと、iアプリはサスペンドして画面上にiアプリ一覧が 表示されます。そのiアプリ一覧からユーザーがいずれかのiアプリを選択するとiアプリはレジュームし、
selectEntry()メソッドは選択されたiアプリに対応するApplicationStoreオブジェクトを返します。返却 されたApplicatoinStoreオブジェクトに対してgetId()メソッドを呼び出すことで、選択されたiアプリの エントリIDを取得することができます。
図 19: iアプリのエントリ ID の取得
iアプリに対応付けられたエントリIDは、そのiアプリが携帯電話上に存在する限り有効であり、iアプリが更 新された場合でも更新後のiアプリに引き継がれます。
なお、ユーザーが選択したiアプリについて、エントリID以外の情報(例えばiアプリ名など)を取得すること はできません。
(B) エントリIDを指定してのiアプリの起動
エントリIDを指定してランチャーモードでiアプリを起動するには、IApplication.launch()メソッドを使用 します。launch()メソッドの第1引数(起動対象となるアプリケーションの種別)には
IApplication.LAUNCH_AS_LAUNCHERを、また第2引数(起動引数を示すString配列)の先頭要素に文字列 化したエントリIDを指定します。
連携モードと異なり、ランチャーモードでは起動先iアプリにパラメータを渡すことはできません。
注意事項:
● ダウンロード即起動iアプリ、および非活性化状態の待ち受けアプリケーションからはこれらの機能を使用 することはできません。
● 起動先iアプリが起動される際、起動元iアプリは終了します。
ApplicationStore as;
// iアプリ一覧の表示
as = ApplicationStore.selectEntry();
// 選択されたiアプリのエントリIDを取得 int id = as.getId();
:
iアプリ一覧 iアプリA iアプリB iアプリC
OK Cancel サスペンド
レジューム
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
● 起動先iアプリの動作が終了すると、携帯電話は待ち受け状態に復帰します。ただし、起動先iアプリをユ ーザーが強制終了した場合、iアプリ終了後にどのような状態に移るかはメーカーにより異なります。
● 起動先iアプリが待ち受けアプリケーションであっても、iアプリ連携起動で起動された場合は待ち受け起 動ではなく通常起動となります。
● 通常起動されることを想定していない待ち受けアプリケーションなど、iアプリの内容によってはランチャ ーモードで起動されることが適切でない場合があります。そのようなiアプリは、ランチャーモードで連携 起動されることを拒否することができます。その場合、ADFのLaunchByAppキーで連携起動の拒否を宣言
(値"deny"を設定)します。この設定が行われているiアプリは、iアプリ選択プロセスでの選択対象外と なります。
● iアプリ選択プロセスにおいて、選択可能なiアプリが携帯電話上に存在しない場合やユーザーが選択操作 をキャンセルした場合は、ApplicationStore.selectEntry()メソッドはnullを返却します。
● 新規にダウンロードされたiアプリにはその時点でランダムなエントリIDが割り当てられ、そのiアプリを 削除しない限り(iアプリの更新を行っても)有効なまま存続します。ダウンロードされたiアプリを削除 して再度ダウンロードした場合は、新規ダウンロードと見なされ再度ランダムなエントリIDが割り当てられ ます。
【DoJa-5.0】
DoJa-4.xプロファイル以前のプロファイルでは、iアプリを連携起動しようとした際には起動元iアプリが一
旦サスペンド状態に入り、iアプリの起動確認を行うためのダイアログがシステムにより表示されます。これ
に対しDoJa-5.0プロファイル以降では、この起動確認は行われません。