第 9 章 待ち受けアプリケーション
11.1 ブラウザ連携起動
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
(*3) スケジュール管理機能の呼び出しのうち、iアプリからのスケジューラの起動についてはDoJa-4.1プロファイルまで はiアプリオプションAPIの位置づけです。この機能は、DoJa-5.0プロファイルにてiアプリ基本APIの位置づけに 変更されました。
本章では、アプリケーション連携機能の利用方法、および各種制限事項などについて解説します。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
● OBJECTタグ
OBJECTタグは、iアプリに対応するADFを特定するために使用されます。OBJECTタグのid属性には、A タグのista属性で参照される名前(HTML内で一意)を指定します。またdata属性にはADFの位置を示 すURLを指定します。携帯電話はiアプリをダウンロードした際に、そのiアプリに対応するADFのURL を記憶しています。ブラウザからのiアプリ起動では、data属性に指定されたURLと同じADFを参照して いるiアプリが起動対象となります。type属性にはdata属性で示されたデータ(この場合ADF)のコンテ ンツタイプを指定します。ADFのコンテンツタイプは"application/x-jam"です。
OBJECTタグの内部には、下記に示すPARAMタグを記述することができます。
● PARAMタグ
PARAMタグは、ブラウザからのiアプリ起動時に、IApplication.getParameter ()メソッドにより取得 できるパラメータを指定するために使用されます。
PARAMタグは、OBJECTタグ中に最大16個含めることができます。また、1つのOBJECTタグ中に指定され た全PARAMタグのname属性の値の長さとvalue属性の値の長さの合計は最大255バイトに制限されます。
name属性の値およびvalue属性の値には、それぞれSJISで日本語テキストを指定することができます。
以下に、携帯電話にダウンロードされているiアプリと、iアプリ起動用 HTML の内容の関係に ついて図示します。
図 15: ダウンロード済みiアプリとiアプリ起動用 HTML の記述内容との関係 iアプリA
ADF:
http://www.nttdocomo.co.jp/a.jam LaunchByBrowser:
http://www.nttdocomo.co.jp
iアプリB ADF:
http://www.nttdocomo.co.jp/b.jam LaunchByBrowser:
http://www.nttdocomo.com
:
<OBJECT declare id=”application.a”
data=” http://www.nttdocomo.co.jp/a.jam”
type=”application/x-jam”> </OBJECT>
<A ista=”application.a” href=”error.html”>
iアプリAの実行
</A><P>
<OBJECT declare id=”application.b”
data=” http://www.nttdocomo.co.jp/b.jam”
type=”application/x-jam”> </OBJECT>
<A ista=”application.b” href=”error.html”>
iアプリBの実行
</A><P>
<OBJECT declare id=”application.c”
data=” http://www.nttdocomo.co.jp/c.jam”
type=”application/x-jam”> </OBJECT>
<A ista=”application.c” href=”error.html”>
iアプリCの実行
</A><P>
① 指定されたADFを使用してダウンロードされたiアプリが携帯電話上に存在し、かつiアプリ起動用HTML
のURLがLaunchByBrowserキーの値に前方一致するため、iアプリAはユーザーの許可が得られれば起動
可能。
② 指定されたADFを使用してダウンロードされたiアプリが携帯電話上に存在するが、iアプリ起動用HTML
のURLがLaunchByBrowserキーの値に前方一致しないため、iアプリBは起動不可能。
③ 指定されたADFを使用してダウンロードされたiアプリが携帯電話上に存在しないため、iアプリCは起動 不可能。
ブラウザでアクセスしたiアプリ起動用HTML の記述内容(http://www.nttdocomo.co.jp/appexec.html)
携帯電話にインストール されたiアプリ
①
②
③
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
注意事項:
● 携帯電話ユーザーは、携帯電話の設定によりブラウザからのiアプリ起動を禁止することができます。また ブラウザからiアプリを起動する前に、iアプリ実行環境はユーザーにiアプリを起動してよいか確認を行 います。これらの機構によりユーザーの許可が得られなかった場合、そのiアプリの起動は行われません。
● ブラウザから起動されたiアプリの動作が終了(IApplication.terminate()により終了)すると、iア プリを起動する前のブラウザの状態に復帰します。ただし、ブラウザから起動されたiアプリをユーザーが 強制終了した場合、およびブラウザから起動されたiアプリがアプリケーション連携機能によって他のネイ ティブアプリケーションの機能の起動または呼び出しを行った場合はiアプリ終了後にどのような状態に移 るかはメーカーにより異なります。
【DoJa-5.0】
DoJa-5.0プロファイル以降、トルカのバージョン2.0フォーマットに対応している携帯電話では、トルカ(詳
細)のHTMLコンテンツ部分に本項で解説したタグを記述することで、トルカビューアからiアプリを起動す ることもできます。この場合、トルカ(詳細)のHTMLコンテンツ部分に記述するOBJECTタグ data属性 に記載するADF URLには相対URLは指定しないようにしてください。
トルカビューアからのiアプリ起動を許可するには、そのiアプリのADFに、LaunchByBrowserキーの代 わりにLaunchByToruCaキーを指定します。各々のトルカデータにはトルカ(詳細)を取得するためのURL が対応付けられていますが、トルカ(詳細)の取得先URLにLaunchByToruCaキーの値が前方一致する場 合は、そのトルカから該当のiアプリを起動することができます。
なお、ブラウザからiアプリを起動した際のiアプリの起動種別(IApplication.getLaunchType()メソ ッドで取得する起動種別)がIApplication.LAUNCHED_FROM_BROWSERとなるのに対し、トルカビューア からiアプリを起動した際のiアプリの起動種別はIApplication.LAUNCHED_FROM_TORUCAとなります。
【DoJa-5.1】(906iシリーズ以降)
iアプリ連携起動用のAタグに、ista属性に加えijam属性も指定した場合は、iアプリを連携起動しよう とした際にそのiアプリが更新されていることが検出されるとiアプリの更新処理が行われます。そのような 状況において、iアプリの更新処理に引き続いて起動されたiアプリは、906iシリーズ以降では起動種別は IApplication.LAUNCHED_FROM_BROWSER(ブラウザからの起動の場合)もしくは
IApplication.LAUNCHED_FROM_TORUCA(トルカビューアからの起動の場合)となります。しかしそれよ り以前の機種では、更新処理に引き続いて起動されたiアプリの起動種別はメーカーにより異なります。
なおista属性とijam属性が併記されていても、携帯電話上に対象のiアプリが存在しない場合には、iア プリのダウンロード処理に引き続いて起動されたiアプリの起動種別は
IApplication.LAUNCHED_AFTER_DOWNLOADとなります。
11.1.2 iアプリからのブラウザ起動
iアプリからブラウザを起動するには、IApplication.launch()メソッドを使用します。ブラ ウザを起動するには、このメソッドの第 1 引数(起動対象となるアプリケーションの種別)に IApplication.LAUNCH_BROWSER を、また第 2 引数(起動引数を示す String 配列)の先頭要 素に接続先の URL (http スキームまたは https スキームをサポート)を設定します。 URL は最長 255 バイトまで指定できます。
なおブラウザを起動するiアプリは、 ADF の UseBrowser キーでブラウザ起動を行うことを宣言
(値”launch”を設定)する必要があります。この宣言を行っていないiアプリはブラウザを起動 することはできません。
IApplication.launch()メソッドを呼び出すと、iアプリはサスペンド状態に入ります。その
後、以下の 2 点を満たすことでブラウザが起動されます。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
・ パケット通信が可能であること(圏外など、パケット通信ができない状態でないこと)。
・ ブラウザ起動前、iアプリ実行環境がユーザーに求める起動確認に対しユーザーが同意すること。
いずれかを満たしていない場合、iアプリはレジュームし、IApplication.launch()メソッド は例外をスローすることなく呼び出し元に復帰します。また、両方の条件を満たしてブラウザが起 動される際、iアプリは終了します。
【DoJa-5.0】
DoJa-5.0プロファイル以降では、iアプリからブラウザを起動する際にiアプリを終了させず、サスペンド状
態を継続することを指示するためのAPIが用意されています。ただしこの機能はオプショナルであり、メーカ ーによってはサポートされない場合があります。
この機能を使用するには上記の手順において、launch()メソッドの第1引数に、
IApplication.LAUNCH_BROWSERの代わりにIApplication.LAUNCH_BROWSER_SUSPENDを指定します。
この方法でブラウザを起動した場合はブラウザ起動後もiアプリはサスペンド状態を保っており、ブラウザ終 了時にレジューム復帰します。
注意事項:
● DoJa-4.0プロファイル以前のiアプリ実行環境では、待ち受けアプリケーションが待ち受け起動されている
場合、どのような状態であってもMApplication.launch()メソッドを使用してブラウザを起動すること はできません。待ち受け起動された待ち受けアプリケーションがブラウザを起動しようとすると例外が発生 します。
これに対しDoJa-4.1プロファイル以降のiアプリ実行環境では、待ち受け起動された待ち受けアプリケーシ ョンであっても、活性化状態であればMApplication.launch()メソッドによるブラウザ起動を行うこと ができます。
● iアプリから起動されたブラウザがユーザー操作により終了すると、待ち受け状態に復帰します。
● HttpConnectionを使用したHTTP通信時と異なり、iアプリからのブラウザ起動では、iアプリダウン ロード元サイト以外のサイトにアクセスすることができます。ただしリクエストメソッドはGETに限定され、
iアプリ実行環境によるユーザーへのブラウザ起動確認時にURLの内容がユーザーに提示されます。