以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、携帯端末に対して本発明を適用した場合の実施の形態である。
[1.携帯端末の構成及び機能概要]
先ず、図1等を参照して、本実施形態に係る携帯端末の構成及び機能概要について説明する。図1は、本実施形態に係る携帯端末の概要構成例を示すブロック図である。図1に示すように、携帯端末1は、NFC対応端末であり、CLF11、UIMカード12、ベースバンドプロセッサ13、及びバッテリー14等を備えて構成されている。その他、携帯端末1は、図示しないが、移動体無線通信部、操作・表示部、及び記憶部等を備える。移動体無線通信部は、移動体通信ネットワークを利用した無線通信機能を有する。移動体通信ネットワークは、例えば、電話用回線交換ネットワーク、及びインターネットに接続するためのデータ通信用パケット交換ネットワークを含む。移動体無線通信部は、図示しないアンテナを介して、最寄りの基地局との間で無線通信を行い、当該基地局及び移動体通信ネットワークを介して他の携帯端末やサーバとの間で通信を行う。操作・表示部は、例えば、ユーザの指やペン等による操作指示を受け付ける入力機能と、情報を表示する画面を有するタッチパネルとを備える。操作・表示部は、ユーザからの操作指示を受け付け、その操作指示に応じた信号をベースバンドプロセッサ13へ出力する。記憶部は、例えば不揮発性メモリから構成され、オペレーティングシステム(Operating System、以下、「OS」という)、アプリケーションプログラム、及びブラウザプログラム等が記憶される。携帯端末1は、音声処理部及びスピーカを備えてもよい。なお、携帯端末1には、携帯電話機やスマートフォン等を適用できる。
CLF11は、NFCの規格で規定される非接触通信を行う非接触型ICチップであり、図示しないが、CPU(Central Processing Unit)、所定のプログラムを記憶する不揮発性メモリ(例えばフラッシュメモリ等)、データを一時記憶するRAM(Random Access Memory)、UIMカード12との間のインターフェースを担うI/Oポート(SWIO(Single Wire protocol Input/Output))、及びベースバンドプロセッサ13との間のインターフェースを担うI/Oポート等を備えている。また、CLF11には、非接触のフィールド内で、非接触ICカードリーダを備える外部装置2との間で非接触通信を行うためのアンテナ11aが接続されており、CLF11は、非接触通信プロトコル処理を担う。CLF11における非接触通信プロトコルは、携帯端末1が外部装置2と非接触で通信を行うための通信プロトコル(つまり、携帯端末1としての通信プロトコル)であり、UIMカード12からの設定指示により設定される。
UIMカード12は、UICC(Universal Integrated Circuit Card)の一つであり、従来のSIM(Subscriber Identity Module)カードをベースに機能を拡張された接触型ICチップ12aを搭載する。なお、UIMカード12は、NFC対応UIMカードであり、本発明のICカードの一例である。また、接触型ICチップ12aは、本発明の電子情報記憶媒体の一例である。図2は、UIMカード12に搭載される接触型ICチップ12aのハードウェア構成例を示す図である。なお、接触型ICチップ12aは、携帯端末1の回路基板上に直接組み込まれて構成されるようにしてもよく、例えばeUICC(Embedded Universal Integrated Circuit Card)として、携帯端末1から容易に取り外しや取り換えができないように携帯端末1と一体的に搭載されてもよい。
図2は、接触型ICチップ12aのハードウェア構成例を示す図である。図2に示すように、接触型ICチップ12aは、CPU121、RAM122、ROM(Read Only Memory)123、不揮発性メモリ124、及びI/O回路125を備えて構成される。CPU121は、ROM123または不揮発性メモリ124に記憶された各種プログラムを実行するプロセッサ(コンピュータ)であり、本発明における再設定手段、実行手段、再実行手段、及び復帰手段の一例である。不揮発性メモリ124には、例えばフラッシュメモリが適用される。不揮発性メモリ124に記憶される各種プログラム及びデータの一部は、ROM123に記憶されてもよい。なお、不揮発性メモリ124は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ROM123または不揮発性メモリ124との何れかに記憶されるプログラムには、OS、本発明の通知処理プログラム、複数(つまり、複数種類)のアプリケーションプログラム、及び複数のSDプログラム等が含まれる。なお、本発明の通知処理プログラムは、OSまたはSDプログラム内に組み込まれてもよいし、或いは、OS及びSDプログラムとは独立したミドルウェアとしてインストールされてもよい。
ここで、アプリケーションプログラムは、UIMカード12においてアプリケーションインスタンス(これを、「アプリケーション」という)の機能を実現するためのプログラムである。アプリケーションは、アプリケーションプログラム等をメモリに展開して実行可能な状態にインストール(搭載)されたモジュールである。なお、アプリケーションは、アプリケーションプログラムを指す場合もある。本実施形態では、接触型ICチップ12aに搭載されたOS上で、複数のアプリケーションが動作可能に設定される。これにより、UIMカード12は、例えばそれぞれのアプリケーションにしたがってCLF11を介して外部装置2と通信を行う。なお、それぞれのアプリケーションには、固有の識別子(アプリケーションの情報の一例)が付与されている。
SDプログラムは、UIMカード12においてSD(Security Domain)の機能を実現するためのプログラムである。SDとは、例えば事業者が提供するサービスを実現するうえで必要となるUIMカード12内のカードコンテントを管理するための機能を提供する管理アプリケーションである。以下、SDを、「管理アプリ」という。カードコンテントとは、アプリケーションプログラムやアプリケーションプログラムから生成されたアプリケーションである。また、カードコンテントを管理するための機能とは、例えば、アプリケーションプログラムのロード、アプリケーションインスタンスの生成(インストール)、アプリケーションプログラムやアプリケーションインスタンスの削除、アプリケーションインスタンスへのデータの書込み(パーソナライズ)などである。なお、管理アプリには、ISD(Issuer Security Domain)とSSD(Supplementary Security Domains)とがある。ISDは、上記機能をサポートすることで、UIMカード12のカードコンテントに対して、UIMカード12上でサービスを提供するサービス提供者等の管理及びセキュリティポリシーを実現する。
ところで、従来の非接触ICカードは、基本的に1つの事業者に基づくサービスを提供するのに対し、本実施形態の携帯端末1は、複数の事業者に基づくサービスを提供可能である。例えば、クレジットブランド(クレジットカード会社)A兼クレジットブランドBのクレジットカード機能を持ち合わせた1枚の非接触ICカードは存在しないが、本実施形態では、接触型ICチップ12aに搭載された複数のアプリケーションにより、当該機能を実現することが可能となる。
図3は、接触型ICチップ12aに搭載される可能性のあるアプリケーションの例を事業者ごとに示す図である。図3の例では、クレジットブランドAのアプリケーションとして、クレジットアプリA1、クレジットアプリA2、及びクレジットアプリA3があり、クレジットブランドBのアプリケーションとして、クレジットアプリ(クレジット決済用のアプリケーション)B1、クレジットアプリB2、及びクレジットアプリB3がある。また、鉄道会社Cのアプリケーションとして、電子マネーアプリ(電子マネー決済用のアプリケーション)C1、及びポイントアプリ(ポイント決済用のアプリケーション)C2があり、鉄道会社Dのアプリケーションとして、電子マネーアプリD1、及びポイントアプリD2がある。さらに、総合サービス会社Eのアプリケーションとして、ポイントアプリE1、チケットアプリ(チケット取得用のアプリケーション)E2、クーポンアプリ(クーポン取得用のアプリケーション)E3、及び電子マネーアプリE4がある。このように1つの接触型ICチップ12a上に、様々なサービス提供者(事業者)が様々なアプリケーションを搭載することが可能となることで、UIMカード12には従来の非接触ICカードには必要なかったアプリケーション管理機能を有する管理アプリが搭載され、各サービス提供者の管理アプリ及びアプリケーション間で階層構造を形成する。
図4は、各サービス提供者の管理アプリ及びアプリケーション間で形成される階層構造の一例を示す図である。図4の例では、クレジットブランドAと鉄道会社Cのそれぞれに対応する管理アプリが階層構造における最上位に位置(存在)しており、それぞれの管理アプリの配下には、それぞれのサービス提供者のアプリケーションが位置している。このため、クレジットブランドAのクレジットアプリA1及びクレジットアプリA2は、クレジットブランドAの管理アプリのセキュリティポリシーが適応される。一方、鉄道会社Cの電子マネーアプリC1及びポイントアプリC2は、鉄道会社Cの管理アプリのセキュリティポリシーが適応される。鉄道会社Cの管理アプリにより、電子マネーアプリC1とポイントアプリC2とが連携することができる。例えば、鉄道会社Cが提供する鉄道の利用回数が増えるたびにポイントが貯まり、貯まったポイントにより乗車が可能となったり、買い物ができるようになったりする。
また、不揮発性メモリ124には、接触型ICチップ12aに搭載された複数のアプリケーションの設定が保存される。例えば複数のアプリケーションのそれぞれに対応する通信プロトコル設定、及びActivated/Deactivated(活性化又は非活性化)の状態設定などが保存される。例えば、それぞれの通信プロトコルには、最大通信速度、1ユニット(例えば、APDU(Application data unit))で送信可能なデータの最大サイズ、フレーム(コマンドを配送するためのパケット)待ち時間、及び仮固有PUICC識別子などの通信パラメータが含まれる。このような通信パラメータは、アプリケーション間で同一の場合もあるし、異なる場合もある。ここで、フレーム待ち時間は、UIMカード12が外部装置2へデータ送信後、無応答と判断するまでの時間である。UIMカード12は、このフレーム待ち時間までに応答を準備できなければ、待ち時間延長要求を外部装置2へ返送する必要がある。仮固有PUICC識別子は、衝突防止処理中で、UIMカード12を識別するのに使われる値である。
I/O回路125には、ISO7816等によって定められたC1〜C8の8個の端子が備えられている。或いは、I/O回路125には、C4とC8の端子を除く6個の端子が備えられている。C1端子は電源端子(VCC)であり、C5端子はグランド端子(GND)である。また、C2端子は、リセット端子(RST)であり、ベースバンドプロセッサ13とのインターフェースのリセット信号を入力するために用いられる。また、C3端子は、クロック端子(CLK)であり、ベースバンドプロセッサ13とのインターフェースのクロックを入力するために用いられる。また、C7端子は、ベースバンドプロセッサ13との間のインターフェースを担う端子であり、UIMカード12とベースバンドプロセッサ13との間の通信のために用いられる。また、C6端子は、CLF11との間のインターフェースを担う端子(SWIO)であり、CLF11との間の通信のために用いられる。なお、CLF11とUIMカード12間のインターフェースには上述したように、SWPが適用される。
CPU121は、接触型ICチップ12aに搭載された複数のアプリケーションの設定に基づいて、当該複数のアプリケーションに共通する設定を行う。なお、それぞれのアプリケーションに共通する設定が不要な場合もある。設定対象の例として、通信プロトコル、Activated/Deactivatedの状態などが挙げられる。複数のアプリケーションに共通する設定を行う場合、通信プロトコル設定では、例えばOSは、接触型ICチップ12aに搭載されたアプリケーションのうちから例えば携帯端末1のユーザにより選択された複数のアプリケーションのそれぞれに対応する通信プロトコル(つまり、それぞれのアプリケーションの通信プロトコル設定)に基づいて、上述した非接触通信プロトコル(携帯端末1としての通信プロトコル)を設定する。すなわち、OSは、アプリケーション毎の通信プロトコルを勘案して、当該複数のアプリケーションに共通する1つの非接触通信プロトコルを設定する。例えば、電子マネーアプリC1とポイントアプリC2とが選択されている場合、携帯端末1が非接触ICカードリーダに翳されたときの1セッション中に電子マネーアプリC1とポイントアプリC2が何れも動作できるように最大公約数となる通信プロトコルが設定される。より具体的には、電子マネーアプリC1に対応する最大通信速度が212kbpsであり、ポイントアプリC2に対応する最大通信速度が106kbpsであると仮定した場合、非接触通信プロトコル(つまり、電子マネーアプリC1とポイントアプリC2に共通する通信プロトコル)における最大通信速度は106kbpsに設定される。また、別の例として、電子マネーアプリC1に対応するフレーム待ち時間が30msであり、ポイントアプリC2に対応するフレーム待ち時間が50msであると仮定した場合、電子マネーアプリC1とポイントアプリC2に共通する非接触通信プロトコルにおけるフレーム待ち時間は30msに設定される。また、別の例として、電子マネーアプリC1に対応する仮固有PUICC識別子が“22”(h)(つまり、binaryでで、0010 0010(b))であり、ポイントアプリC2に対応する仮固有PUICC識別子が“41”(h)(0100 0001(b))であると仮定した場合、電子マネーアプリC1とポイントアプリC2に共通する非接触通信プロトコルにおける仮固有PUICC識別子は、それぞれの仮固有PUICC識別子をマージ(XOR演算)した値である“63”(h)(0110 0011(b))に設定される。
一方、Activated/Deactivatedの状態設定では、例えばOSは、接触型ICチップ12aに搭載されたアプリケーションのうちから例えば携帯端末1のユーザにより選択された複数のアプリケーションのそれぞれに対応するActivated/Deactivatedの状態(つまり、それぞれのアプリケーションのActivated/Deactivatedの状態設定)に基づいて、当該複数のアプリケーションに共通するActivated/Deactivatedの状態を設定する。例えばあるアプリケーション(例えば、クレジットアプリ)の状態がDeactivatedであり、そのアプリケーションの配下にあるアプケーションの状態がActivatedであると仮定した場合、複数のアプリケーションに共通するActivated/Deactivatedの状態は、上位のアプリケーション(例えば、クレジットアプリ)に依存されるため、Deactivatedに設定される。
なお、接触型ICチップ12a内に、例えば同一のクレジットブランドのクレジットアプリが複数搭載されている場合(例えば、クレジットアプリA1及びクレジットアプリA2が搭載されている場合)、携帯端末1が店頭POSレジで非接触ICカードリーダに翳されたとき、ユーザは何れのアプリケーションが決済処理を行うか事前に選択できる必要がある。これを実現するために、接触型ICチップ12a内の各アプリケーションには優先度が割り振られ、携帯端末1のユーザからの操作指示にしたがって何れかのアプリケーションが事前に選択される。また、設定された非接触通信プロトコルの設定指示は、接触型ICチップ12aからCLF11へ送信され、CLF11において非接触通信プロトコルが設定される。CLF11へ非接触通信プロトコルの設定指示を送信するタイミングは、レスポンス送信前であってもよいし、レスポンス送信後であってもよい。また、当該設定指示を送信するタイミングは、CLF11との通信に利用されるSWPが非活性化状態であってもなくてもよく、また、次回活性化時などであってもよい。
上述したように、非接触通信プロトコルが設定された後、選択中の少なくとも何れか1つのアプリケーションの設定が変更される場合、CPU121は、設定変更されたアプリケーションを含む複数のアプリケーションの設定に基づいて、上記設定時と同じように、それぞれのアプリケーションに共通する再設定(再構築)を行う。例えばOSは、設定変更されたアプリケーションを含む複数のアプリケーションのそれぞれに対応する通信プロトコル(つまり、それぞれのアプリケーションの通信プロトコル設定)に基づいて、当該複数のアプリケーションに共通する非接触通信プロトコルの再設定を行う。例えば、電子マネーアプリC1に対応する最大通信速度が212kbpsであり、ポイントアプリC2に対応する最大通信速度が106kbpsであると仮定した場合において、ポイントアプリC2に対応する最大通信速度が86kbpsに設定変更された場合、それぞれのアプリケーションに共通する非接触通信プロトコルにおける最大通信速度が106kbpsから86kbpsに再設定(設定変更)される。一方、Activated/Deactivatedの状態設定では、例えばOSは、設定変更されたアプリケーションを含む複数のアプリケーションのそれぞれに対応するActivated/Deactivatedの状態(つまり、それぞれのアプリケーションのActivated/Deactivatedの状態設定)に基づいて、当該複数のアプリケーションに共通するActivated/Deactivatedの状態を設定する。例えば、あるアプリケーション(例えば、クレジットアプリ)の状態がActivatedであり、そのアプリケーションの配下にあるアプケーションの状態もActivatedであると仮定した場合において、あるアプリケーション(例えば、クレジットアプリ)の状態がDeactivatedに設定変更された場合、上記再設定により、そのアプリケーションの配下にあるアプリケーションの状態もDeactivatedに設定変更される。つまり、この場合、あるアプリケーションのActivated/Deactivatedの状態が変化すると、上記再設定により、そのアプリケーションと連動する他のアプリケーションのActivated/Deactivatedの状態も合わせて設定変更される。
なお、上記再設定により非接触通信プロトコルが設定変更される場合もあるし設定が維持される場合もある。また、それぞれのアプリケーションに共通する再設定が実施されない場合もある。少なくとも何れか1つのアプリケーションの設定が変更された場合、OSは、複数のアプリケーションのうち通知対象となるアプリケーション(複数のアプリケーションのうち少なくとも何れか1つのアプリケーション)に対して設定変更(例えば、アプリケーションの通信プロトコル設定変更、またはアプリケーションのActivated/Deactivatedの状態変更)されたことを示す設定変更情報を通知する通知処理を実行し、且つ当該通知処理の状況(以下、「通知状況」という)を記録する。また、アプリケーションの再設定が行われた場合(例えば、非接触通信プロトコルが再設定された場合)、OSは、設定変更後の複数のアプリケーションのうち通知対象となるアプリケーション(複数のアプリケーションのうち少なくとも何れか1つのアプリケーション)に対して設定変更(例えば、あるアプリケーションの通信プロトコルの設定変更により非接触通信プロトコルが再設定)されたことを示す設定変更情報(この場合、「設定変更情報」は、「再設定情報」ということもできる)を通知する通知処理を実行し、且つ当該通知処理の状況(以下、「通知状況」という)を記録する。ここで、通知状況の記録は、例えば、通知処理の開始時(通知処理の先頭)、通知処理の途中、及び通知処理の完了(終了)時(通知処理の末尾)のうち何れかの1以上のタイミングで、所定の情報(例えば、通知未完了フラグまたは通知完了フラグ)が不揮発性メモリ124に記憶されたり(つまり、書き込まれたり)、或いは所定の情報(例えば、アプリケーションの識別子)が不揮発性メモリ124から削除(例えば、“00...0”(h)や“FF...F”(h)で上書き)されることより行われる。そして、OSは、上記通知処理中にUIMカード12への電源供給が遮断(電源断)され、当該遮断後に電源供給が復旧(再開)した場合、上記通知状況にしたがって、通知処理を再実行する。これにより、設定変更の通知中に電源供給遮断が発生したとしても、不整合が発生することなくアプリケーションの動作を保障することができる。
ベースバンドプロセッサ13は、携帯端末1のユーザからの操作指示(例えば、操作・表示部を介した操作指示)に応じて各種処理を実行する。また、ベースバンドプロセッサ13は、ブラウザプログラムを実行することによりブラウザとして機能し、ユーザからの指示にしたがって移動体無線通信部及び移動体通信ネットワークを介して特定のサーバとの間で通信を行う。バッテリー14は、携帯端末1の電源であり、携帯端末1を動作させるための電力を外部から充電可能になっている。ベースバンドプロセッサ13は、バッテリー14から供給された電力をCLF11及びUIMカード12へ供給(電源供給)する。
[2.携帯端末1の動作]
次に、図5を参照して、UIMカード12が設定変更コマンドを受信したときの処理の概要について説明する。図5は、UIMカード12がベースバンドプロセッサ13から設定変更コマンドを受信したときの処理を示すシーケンス図である。ここで、設定変更コマンドは、選択中の少なくとも何れか1つのアプリケーションの設定変更を示すコマンドである。このような設定変更コマンドは、特定のサーバから送信され、移動体通信ネットワーク及び移動体無線通信部を介してベースバンドプロセッサ13(ブラウザ)により受信される。或いは、このような設定変更コマンドは、携帯端末1のユーザからの操作指示にしたがって操作・表示部から送信され、ベースバンドプロセッサ13により受信される。ベースバンドプロセッサ13は、当該設定変更コマンドを受信すると、当該設定変更コマンドをUIMカード3の管理アプリへ送信する(ステップS1)。
次いで、管理アプリは、当該設定変更コマンドを受信すると、当該設定変更コマンドをOSへ送信する(ステップS2)。これにより、管理アプリは、OSに対して設定保存の依頼を行う。OSは、当該設定変更コマンドを受信すると(つまり、設定保存の依頼を受けると)、当該設定変更コマンドで指定されたアプリケーションの設定を変更して保存し、選択中の複数のアプリケーションの再設定のための再設定処理(ステップS3)を実行する。この再設定処理では、例えば、上述したように、非接触通信プロトコルが再設定される。次いで、OSは、通知事前処理(ステップS4)を行った後、通知対象となるアプリケーションに対する通知処理(ステップS5)を実行する。図5に示す通知処理では、通知対象となるアプリケーションであるアプリA11、アプリA12、アプリA14、及びアプリA18に対して、上記設定変更情報が通知されるようになっている。設定変更情報の通知を受けたアプリケーションは、当該アプリケーションが出力するデータを変更する。また、設定変更情報の通知を受けたアプリケーションは、使用可能な機能を制限したり、或いは当該制限を解除する場合もある。例えば、あるアプリケーションがActivatedとなったことなどを示す設定変更情報の通知を受けた場合、当該アプリケーションは、Activatedとなったアプリケーションと連携する連携コマンドを使用できるよう機能を解除する。また、設定変更情報の通知を受けたアプリケーションは、連携コマンドが使用可能であることを示す情報をSelectコマンドに対するレスポンスに含める場合もある。また、設定変更情報の通知を受けたアプリケーションが、Activatedであるアプリケーションの一覧を返すような機能を持っている場合、その一覧を更新する場合もある。また、設定変更情報の通知を受けたアプリケーションは、再設定された通信パラメータに応じて、使用できる機能を制限する場合もある。
そして、OSは、上記通知に対する確認応答を上記通知対象となるアプリケーション全てから受けた場合、管理アプリに対して上記設定変更コマンドに対するレスポンスを送信する(ステップS6)。管理アプリは、OSからのレスポンスを受けると、上記設定変更コマンドに対するレスポンスをベースバンドプロセッサ13へ送信する(ステップS7)。なお、アプリケーションの設定変更は管理アプリが行ってもよく、この場合、管理アプリが、上記ステップS3〜ステップS5の処理を行ってもよい。なお、非接触通信プロトコルが再設定された場合、OSは、当該再設定された非接触通信プロトコルの設定指示をCLF11へ送信する。これにより、CLF11において非接触通信プロトコルが設定される。
次に、UIMカード12が設定変更コマンドを受信したときの処理の詳細、及び当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の詳細について、実施例1〜実施例6に分けて説明する。図6は、実施例1〜実施例6で実行される通知事前処理の内容、及び通知処理における通知状況の記録のタイミング及び内容の一覧を示す図である。図6に示すように、通知事前処理の内容、及び通知処理における通知状況の記録のタイミング及び内容は、実施例1〜実施例6間で少しずつ異なっている。なお、実施例1〜6では、通知アプリケーションリストが用いられ、実施例5及び6では、さらに、通知イベントリストが用いられる。通知アプリケーションリストは、通知対象となるアプリケーションの情報を登録(記録)するリストである。通知イベントリストは、アプリケーションの設定変更の基点となる通知イベントの情報を登録(記録)するリストである。実施例1〜4では、通知アプリケーションリストは不揮発性メモリ124に保存される(つまり、電源供給が遮断されても当該リストは消去されない)。一方、実施例5及び6では、通知アプリケーションリストは不揮発性メモリ124に保存されず(RAM122に一時的に記憶される)、この代わりに、通知イベントリストが不揮発性メモリ124に保存される。
(実施例1)
図7(A)は、実施例1において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図7(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図7(A),(B)の処理は、OSにより行われるが、管理アプリにより行われてもよい。なお、図7(A)に示す処理は、設定変更コマンドが受信されたときに開始される。
図7(A)に示す処理が開始されると、OSは、上述したように、再設定処理(ステップS3)を行う(ステップS101)。次いで、OSは、通知事前処理(ステップS4)を開始し、接触型ICチップ12aに搭載されているアプリケーションを1つ選定する(ステップS102)。次いで、OSは、ステップS102で選定したアプリケーションの通知設定を取得する(ステップS103)。アプリケーションの通知設定は、アプリケーションの再設定があった場合に当該アプリケーションが通知を要求するか否かの設定であり、例えば不揮発性メモリ124に保存され、OSにより管理される。なお、アプリケーションの通知設定は、例えばアプリケーションのインストール時に行われ、インストール後にも、外部からのコマンドに応じて変更可能になっている。
次いで、OSは、ステップS103で取得した通知設定に基づいて、ステップS102で選定したアプリケーションへの通知の必要があるか否かを判定する(ステップS104)。OSは、選定したアプリケーションへの通知の必要があると判定した場合(ステップS104:YES)、当該選定したアプリケーションを通知対象として、ステップS105へ進む。一方、OSは、当該選定したアプリケーションへの通知の必要がないと判定した場合(ステップS104:NO)、ステップS106へ進む。
ステップS105では、OSは、通知対象となるアプリケーションの情報を、不揮発性メモリ124に保存されている通知アプリケーションリストに登録し、ステップS106へ進む。なお、通知アプリケーションリスト(未登録)は、例えば上記通知事前処理の開始前に作成される。図8は、実施例1における通知アプリケーションリストの登録内容の一例を示す図である。図8に示す通知アプリケーションリストには、リスト番号、通知対象となるアプリケーションの識別子、通知理由、及び変更内容が対応付けられて登録されている。図8の例では、通知アプリケーションリストに登録されたアプリ1の識別子に対応付けられた通知理由は、管理アプリによる設定変更となっており、アプリ2、アプリ4、及びアプリ8の識別子のそれぞれに対応付けられた通知理由は、アプリ1の設定変更となっている。また、図8の例では、アプリ1、アプリ2、アプリ4、及びアプリ8の識別子のそれぞれに対応付けられた変更内容は、アプリ1の通信プロトコルの設定変更になっている。なお、リスト番号は、例えば通知アプリケーションリストへの登録順序に対応している。
ステップS106では、OSは、接触型ICチップ12aに搭載されているアプリケーションのうち、まだ選定されていないアプリケーションがあるか否かを判定する。OSは、まだ選定されていないアプリケーションがある(つまり、残りがある)と判定した場合(ステップS106:YES)、ステップS102に戻り、まだ選定されていないアプリケーションを選定してステップS103以降の処理を行う。一方、OSは、まだ選定されていないアプリケーションがない(つまり、全てのアプリケーションを選定した)と判定した場合(ステップS106:NO)、通知事前処理を終了し、ステップS107へ進む。
ステップS107では、OSは、通知アプリケーションリストは空であるか(つまり、アプリケーションの情報が登録されていないか)否かを判定する。OSは、通知アプリケーションリストは空でないと判定した場合(ステップS107:NO)、ステップS108へ進む。一方、OSは、通知アプリケーションリストは空であると判定した場合(ステップS107:YES)、設定変更コマンドに対するレスポンス(通知対象となるアプリケーション無を示す)を管理アプリへ送信する。
ステップS108では、OSは、通知処理(ステップS5)を開始し、通知状況として、通知未完了フラグ(通知未完了情報の一例)を記録する。なお、通知未完了フラグの記録では、例えば、通知未完了フラグを示す“F1”(h)が不揮発性メモリ124における所定の記憶領域に記憶される(言い換えれば、“00”(h)が“F1”(h)に書き換えられる)。次いで、OSは、通知アプリケーションリストから、アプリケーションの情報を1つ取得する(ステップS109)。つまり、通知対象となるアプリケーションが特定される。次いで、OSは、ステップS109で取得した情報に含まれる識別子に対応するアプリケーション(通知対象となるアプリケーション)に対して、上述したように、設定変更情報を通知する(ステップS110)。
次いで、OSは、通知アプリケーションリスト内の全てのアプリケーションに通知したか否かを判定する(ステップS111)。OSは、通知アプリケーションリスト内の全てのアプリケーションに通知していないと判定した場合(ステップS111:NO)、ステップS109に戻り、まだ通知していないアプリケーションの情報を1つ取得してステップS110以降の処理を行う。一方、OSは、通知アプリケーションリスト内の全てのアプリケーションに通知したと判定した場合(ステップS111:YES)、所定時間内に上記通知対象のアプリケーション全てから上記通知に対する確認応答を受けたか否かを判定する(ステップS112)。
OSは、所定時間内に上記通知対象のアプリケーション全てから上記通知に対する確認応答を受けたと判定した場合(ステップS112:YES)、通知状況として、通知完了フラグ(通知完了情報の一例)を記録して(ステップS113)当該通知処理を終了し、上記設定変更コマンドに対するレスポンス(例えば、正常に設定変更が完了したことを示す)を管理アプリへ送信する。これにより、当該レスポンスがベースバンドプロセッサ13へ送信される。なお、通知完了フラグの記録では、例えば、通知完了フラグを示す“F2”(h)が不揮発性メモリ124における所定の記憶領域(通知未完了フラグが記憶される領域とは異なる記憶領域)に記憶される(言い換えれば、“00”(h)が“F2”(h)に書き換えられる)。或いは、通知完了フラグの記録では、例えば、通知完了フラグを示す“F2”(h)が、不揮発性メモリ124において通知未完了フラグが記憶される領域と同じ記憶領域に記憶される。この場合、例えば、“F1”(h)が“F2”(h)に書き換えられる。一方、OSは、所定時間内に上記通知対象のアプリケーション全てから上記通知に対する確認応答を受けていないと判定した場合(ステップS112:NO)、エラー処理を行う。
一方、図7(B)に示す処理(起動処理)は、上記処理中に電源供給が遮断しその後に電源供給が復旧したときに開始される。図7(B)に示す処理が開始されると、OSは、上記通知状況に基づいて、上記通知処理が未完了であるか否かを判定する(ステップS115)。例えば、通知未完了フラグ及び通知完了フラグが双方とも記録されているかどうかが判定され、双方とも記録されている場合、OSは、上記通知処理が未完了でない(つまり、当該通知処理が完了した)と判定し(ステップS115:NO)、図7(B)に示す処理は終了する。一方、通知未完了フラグが記録されており、且つ通知完了フラグが記録されていない場合、OSは、上記通知処理が未完了であると判定し(ステップS115:YES)、ステップS116へ進み、上記通知処理を再実行する。当該再実行される通知処理では、ステップS116〜S120の処理(図7(A)に示すステップS109〜S113の処理と同様)が行われる。なお、通知未完了フラグが記憶される領域と、通知完了フラグが記憶される領域とが同じ記憶領域である場合の例では、ステップS115において、通知未完了フラグ“F1”(h)が記録されている場合、上記通知処理が未完了であると判定される(ステップS115:YES)一方、通知完了フラグ“F2”(h)が記録されている場合、上記通知処理が未完了でない(つまり、完了した)と判定される(ステップS115:NO)ことになる。
このように、実施例1によれば、通知未完了フラグ及び通知完了フラグを利用して電源供給遮断時の通知状況を迅速に判断することができ、当該判定された通知状況にしたがって、アプリケーションに対する通知を確実に行うことができる。
(実施例2)
図9(A)は、実施例2において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図9(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。なお、図9(A),(B)の処理は、図7(A),(B)の処理と基本的には同様であるので、主に、図7(A),(B)の処理と異なる部分について説明する。実施例2では、実施例1と同様、図8に示すように、通知アプリケーションリストに、通知対象となるアプリケーションの情報が登録される。
図9(A)に示すステップS121〜S127の処理は、図7(A)に示すステップS101〜S107の処理と同様に行われる。実施例1では、図7(A)に示すステップS108(通知処理の開始時)において通知未完了フラグが記録されたが、実施例2では、通知未完了フラグが記録されずにステップS128〜S131の処理(図7(A)に示すステップS109〜S112の処理と同様)が行われる。そして、ステップS132では、OSは、通知アプリケーションリストから、ステップS129において通知が完了した全てのアプリケーションの情報を削除(例えば、通知アプリケーションを“0000・・・”(h)で上書き)することで、通知状況を記録する。これにより、通知アプリケーションリストが空になる。或いは、通知アプリケーションリスト自体が削除されてもよい。
一方、図9(B)に示す処理では、OSは、上記通知状況に基づいて、上記通知処理が未完了であるか否かを判定する(ステップS135)。例えば、通知アプリケーションリストが空であるかどうかが判定され、空である場合、OSは、上記通知処理が未完了でない(つまり、当該通知処理が完了した)と判定し(ステップS135:NO)、図9(B)に示す処理は終了する。一方、通知アプリケーションリストが空でない場合、OSは、上記通知処理が未完了であると判定し(ステップS135:YES)、ステップS136へ進み、上記通知処理を再実行する。当該再実行される通知処理では、ステップS136〜S140の処理(図9(A)に示すステップS128〜S132の処理と同様)が行われる。
このように、実施例2によれば、通知アプリケーションリストを利用して電源供給遮断時の通知状況を迅速に判定することができ、当該判定された通知状況にしたがって、アプリケーションに対する通知を確実に行うことができる。
(実施例3)
図10(A)は、実施例3において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図10(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図10(A),(B)の処理は、図7(A),(B)の処理と基本的には同様であるので、主に、図7(A),(B)の処理と異なる部分について説明する。
図10(A)に示すステップS141〜S147の処理は、図7(A)に示すステップS101〜S107の処理と同様に行われる。実施例1では、図7(A)に示すステップS108(通知処理の開始時)において通知未完了フラグが記録され、且つ図7(A)に示すステップS113(通知処理の完了時)において通知完了フラグが記録されたが、実施例3では、通知処理の途中でアプリケーションに対する通知が行われる度に当該アプリケーションに対応する通知完了フラグが通知状況として記録される。
図10(A)に示ステップS148及びS149の処理は、図7(A)に示すステップS109及びS110の処理と同様に行われる。そして、ステップS150では、OSは、ステップS149で通知が完了したアプリケーションの情報に対応付けて通知完了フラグを通知状況として記録する。例えば、通知アプリケーションリストにおいて、通知が完了したアプリケーションの情報に対応付けられて通知完了フラグが登録される。その後、図10(A)に示ステップS151及びS152の処理(図7(A)に示すステップS111及びS112の処理と同様)が行われる。このように、実施例3では、ステップS148〜S151のループ処理中に通知が完了したアプリケーションの通知完了フラグが順次記録(ステップS150)される(つまり、アプリケーション毎に通知完了フラグが記録)。図11は、実施例3における通知アプリケーションリストの登録内容の一例を示す図である。図11に示す通知アプリケーションリストには、通知が完了したアプリケーションの識別子等に対応付けられて通知完了フラグ“F0”(h)が登録されている。
なお、ステップS150において、ステップS149で通知が完了したアプリケーションのリスト番号(アプリケーションの情報の一例)が通知状況として記録(例えば、通知アプリケーションリストに対応付けられて不揮発性メモリ124に記憶)されてもよい。例えば、図11において、アプリ4への通知が完了した場合、当該アプリ4のリスト番号「No.3」が記録される。この場合において、通知アプリケーションリストのリスト番号順にアプリケーションに対する通知が行われるとき、アプリケーションに対する通知が行われる毎にリスト番号が上書き保存されてもよい。例えば、図11において、アプリ8への通知が完了した場合、当該アプリ8のリスト番号「No.4」により、アプリ4のリスト番号「No.3」が上書きされる。これにより、通知アプリケーションリストのどのアプリケーションまで通知が行われたかを判定することが可能となる。或いは、ステップS150において、ステップS149で通知が完了したアプリケーションの識別子(アプリケーションの情報の一例)が通知状況として記録(例えば、通知アプリケーションリストに対応付けられて不揮発性メモリ124に記憶)されてもよい。
一方、図10(B)に示す処理では、OSは、上記通知状況に基づいて、全てのアプリケーションの通知状況が完了になっているか否かを判定する(ステップS155)。例えば、通知アプリケーションリストにおいて全てのアプリケーションに対応付けられて通知完了フラグが登録されているかどうかが判定され、全てのアプリケーションに対応付けられて通知完了フラグが登録されている場合、OSは、全てのアプリケーションの通知状況が完了になっていると判定し(ステップS155:YES)、図10(B)に示す処理は終了する。一方、全てのアプリケーションに対応付けられて通知完了フラグが登録されていない場合(つまり、1つでも通知されていないアプリケーションがある場合)、OSは、全てのアプリケーションの通知状況が完了になっていないと判定し(ステップS155:NO)、ステップS156へ進み、上記通知処理を再実行する。当該再実行される通知処理では、OSは、先ず、通知完了フラグが対応付けられて登録されていないアプリケーション(つまり、未通知のアプリケーション)の情報を通知アプリケーションリストから1つ取得する(ステップS156)。次いで、OSは、ステップS156で取得した情報に含まれる識別子に対応するアプリケーションに対して、上述したように、設定変更情報を通知し(ステップS157)、当該アプリケーションの情報に対応付けて通知完了フラグを通知状況として記録する(ステップS158)。そして、ステップS159及びS160の処理(図7(A)に示すステップS118及びS119の処理と同様)が行われる。このように、実施例3では、OSは、通知完了フラグが対応付けられていないアプリケーションに対して通知処理を再実行することになる。
なお、ステップS150において通知が完了したアプリケーションのリスト番号が通知状況として記録された場合、ステップS155では、例えば、通知状況として記録されたリスト番号が、通知アプリケーションリストにおいて最後のリスト番号(図11の例では、アプリ8のリスト番号「No.4」)であるかどうかが判定され、記録されたリスト番号が当該最後のリスト番号である場合、OSは、全てのアプリケーションの通知状況が完了になっていると判定する。一方、記録されたリスト番号が当該最後のリスト番号でない場合、OSは、全てのアプリケーションの通知状況が完了になっていないと判定することになる。この場合に再実行される通知処理では、OSは、記録されたリスト番号に基づき、アプリケーションのリスト番号が記録されなかった(例えば、上書きも含めて記録されなかった)アプリケーションの情報(つまり、未通知のアプリケーション)の情報を通知アプリケーションリストから1つ取得し(ステップS156)、ステップS157以降の処理を行うことになる。
或いは、ステップS150において通知が完了したアプリケーションの識別子が通知状況として記録された場合、ステップS155では、例えば、通知アプリケーションリストにおける全てのアプリケーションの識別子が記録されているかどうかが判定され、全てのアプリケーションの識別子が記録されている場合、OSは、全てのアプリケーションの通知状況が完了になっていると判定する。一方、全てのアプリケーションの識別子が記録されていない場合、OSは、全てのアプリケーションの通知状況が完了になっていないと判定することになる。この場合に再実行される通知処理では、OSは、上記識別子が記録されていないアプリケーションの情報(つまり、未通知のアプリケーション)の情報を通知アプリケーションリストから1つ取得し(ステップS156)、ステップS157以降の処理を行うことになる。
このように、実施例3によれば、アプリケーション毎の通知完了フラグを利用して電源供給遮断時の通知状況を詳細に判定することができ、当該判定された通知状況にしたがって、重複する通知を防ぎつつ(このため、CPU121の負荷低減を図りつつ)、アプリケーションに対する通知を確実に行うことができる。
(実施例4)
図12(A)は、実施例4において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図12(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図12(A),(B)の処理は、図10(A),(B)の処理と基本的には同様であるので、主に、図10(A),(B)の処理と異なる部分について説明する。
図12(A)に示すステップS161〜S169の処理は、図10(A)に示すステップS141〜S149の処理と同様に行われる。実施例3では、通知処理の途中でアプリケーションに対する通知が行われる度に当該アプリケーションに対応する通知完了フラグが記録されたが、実施例4では、通知処理の途中でアプリケーションに対する通知が行われる度に当該アプリケーションの情報が通知アプリケーションリストから削除されることで実質的に通知状況が記録される。
ステップS170では、OSは、ステップS169で通知が完了したアプリケーションの情報を通知アプリケーションリストから削除する。その後、図12(A)に示ステップS171及びS172の処理(図10(A)に示すステップS151及びS152の処理と同様)が行われる。このように、実施例4では、ステップS168〜S171のループ処理中に通知が完了したアプリケーションの情報が順次削除(ステップS170)される。図13は、実施例4における通知アプリケーションリストの登録内容の一例を示す図である。図13(A)〜(D)に示すように、通知が完了したアプリケーションの情報が通知アプリケーションリストから順次削除されている。なお、図13(A)〜(D)に示すように、通知アプリケーションリストの末尾から先頭に向かって(つまり、リスト番号が最も大きいアプリケーション(図13(A)の例では、アプリ8)からリスト番号が最も小さいアプリケーション(図13(A)の例では、アプリ1)に向かって)順番に通知して、通知が完了したアプリケーションの情報が削除されることが望ましい。
一方、図12(B)に示す処理では、OSは、上記通知状況に基づいて、全てのアプリケーションの通知状況が完了になっているか否かを判定する(ステップS175)。例えば、通知アプリケーションリストにアプリケーションの情報が登録されているかどうかが判定され、アプリケーションの情報が登録されていない場合(つまり、通知アクリケーションリストが空である場合)、OSは、全てのアプリケーションの通知状況が完了になっていると判定し(ステップS175:YES)、図12(B)に示す処理は終了する。一方、1つでもアプリケーションの情報が登録されている場合、OSは、全てのアプリケーションの通知状況が完了になっていないと判定し(ステップS175:NO)、ステップS176へ進み、上記通知処理を再実行する。当該再実行される通知処理では、OSは、先ず、通知アプリケーションリストからアプリケーションの情報を1つ取得する(ステップS176)。次いで、OSは、ステップS176で取得した情報に含まれる識別子に対応するアプリケーションに対して、上述したように、設定変更情報を通知し(ステップS177)、当該アプリケーションの情報を通知アプリケーションリストから削除する(ステップS178)。そして、ステップS179及びS180の処理(図10(A)に示すステップS159及びS160の処理と同様)が行われる。このように、実施例4では、OSは、通知アプリケーションリストから情報が削除されていないアプリケーションに対して通知処理を再実行することになる。
このように、実施例4によれば、通知アプリケーションリストへの登録有無を利用して電源供給遮断時の通知状況を詳細に判定することができ、当該判定された通知状況にしたがって、重複する通知を防ぎつつ(このため、CPU121の負荷低減を図りつつ)、アプリケーションに対する通知を確実に行うことができる。
(実施例5)
図14(A)は、実施例5において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図14(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図14(A),(B)の処理は、図7(A),(B)の処理と基本的には同様であるので、主に、図7(A),(B)の処理と異なる部分について説明する。
図14(A)に示すステップS181の処理は、図7(A)に示すステップS101の処理と同様に行われる。そして、OSは、通知事前処理(ステップS4)を開始し、アプリケーションの設定変更の基点となる通知イベントを記録し(ステップS182)、通知事前処理を終了する。例えば、当該通知イベントの情報が通知イベントリストに登録される。なお、通知イベントリスト(未登録)は、例えば上記通知事前処理の開始前に作成される。図15は、実施例5における通知イベントリストの登録内容の一例を示す図である。図15(A)に示す通知イベントリストには、リスト番号、通知対象となるアプリケーションの識別子、発生イベント(つまり、通知イベント)、及び変更内容が対応付けられて登録されている。つまり、通知イベントリストは、通知アプリケーションリストにおける先頭のアプリケーションの情報のみが登録される。ただし、発生イベントが複数存在する場合もある。この場合、図15(B)に示すように、それぞれの発生イベントの情報が通知アプリケーションリストに登録される。なお、図15(B)に示す“Activatedへ変更”は、アプリ1のActivated/Deactivatedの状態変更を示す。また、実施例1では、通知事前処理において通知対象となるアプリケーションの情報が通知アプリケーションリストに登録されたが、実施例5では、通知処理において通知対象となるアプリケーションの情報が通知アプリケーションリストに登録されることになる。
通知事前処理が終了すると、OSは、通知処理(ステップS5)を開始し、通知状況として、通知未完了フラグを記録する(ステップS183)。次いで、OSは、通知アプリケーションリストをRAM122上で作成し、接触型ICチップ12aに搭載されているアプリケーションを1つ選定する(ステップS184)。そして、ステップS185〜S189の処理(図7(A)に示すステップS103〜S107の処理と同様)が行われる。この場合のステップS187では、OSは、通知対象となるアプリケーションの情報を、RAM122上で作成された通知アプリケーションリストに登録する。また、この場合のステップS189では、OSは、通知アプリケーションリストは空でないと判定した場合(ステップS189:NO)、ステップS190へ進む一方、通知アプリケーションリストは空であると判定した場合(ステップS189:YES)、ステップS194へ進む。その後、ステップS190〜S194の処理(図7(A)に示すステップS109〜S113の処理と同様)が行われる。なお、ステップS190において通知対象となるアプリケーションが特定され、ステップS191において当該通知対象となるアプリケーションに対して設定変更情報が通知されることになる。また、実施例5では、通知アプリケーションリストが空である場合(ステップS189:YES)、通知状況として通知完了フラグが記録される(ステップS194)ことになる。これは、上記再設定が行われた場合であっても、通知アプリケーションが1つも存在しないケースがあるためであり、この場合に、通知完了フラグを記録する必要がある。
一方、図14(B)に示す処理では、図7(B)に示すステップS115と同様、OSは、上記通知状況に基づいて、上記通知処理が未完了であるか否かを判定する(ステップS195)。OSは、上記通知処理が未完了でないと判定した場合(ステップS195:NO)、図14(B)に示す処理は終了する。一方、OSは、上記通知処理が未完了であると判定した場合(ステップS195:YES)、ステップS196へ進み、上記通知処理を再実行する。当該再実行される通知処理では、OSは、ステップS182で記録された通知イベントに基づいて通知処理により通知対象となるアプリケーションを特定し、特定したアプリケーションに対して、上述したように、設定変更情報を通知する。すなわち、当該再実行される通知処理では、図14(A)に示すステップS184〜S194の処理と同様に、ステップS196〜S206の処理が行われる。なお、ステップS202において通知対象となるアプリケーションが特定され、ステップS203において当該通知対象となるアプリケーションに対して設定変更情報が通知されることになる。
このように、実施例5によれば、通知未完了フラグ及び通知完了フラグを利用して電源供給遮断時の通知状況を迅速に判断することができ、当該判定された通知状況にしたがって、アプリケーションに対する通知を確実に行うことができる。さらに、実施例5では、アプリケーションの設定変更の基点となる通知イベントを不揮発性メモリ124に保存すればよいので、実施例1等のように通知アプリケーションリストを保存する構成に比べて必要となるメモリリソースの低減を図ることができる。
(実施例6)
図16(A)は、実施例6において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図16(B)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図16(A),(B)の処理は、図14(A),(B)の処理と基本的には同様であるので、主に、図14(A),(B)の処理と異なる部分について説明する。実施例6では、実施例5と同様、図15に示すように、通知イベントリストに、通知イベントの情報が登録される。
図16(A)に示すステップS211及びS212の処理は、図14(A)に示すステップS181及びS182の処理と同様に行われる。実施例5では、図14(A)に示すステップS183(通知処理の開始時)において通知未完了フラグが記録されたが、実施例6では、通知未完了フラグが記録されずにステップS213〜S222の処理(図14(A)に示すステップS184〜S193の処理と同様)が行われる。そして、ステップS223では、通知イベントが削除される。例えば、通知イベントリストから、通知イベントの情報が削除されることで、通知イベントリストが空になる。或いは、通知イベントリスト自体が削除されてもよい。
一方、図16(B)に示す処理では、OSは、上記通知状況に基づいて、上記通知処理が未完了であるか否かを判定する(ステップS225)。例えば、通知イベントリストが空であるかどうかが判定され、空である場合、OSは、上記通知処理が未完了でないと判定し(ステップS225:NO)、図16(B)に示す処理は終了する。一方、通知イベントリストが空でない場合、OSは、上記通知処理が未完了であると判定し(ステップS225:YES)、ステップS226へ進み、上記通知処理を再実行する。当該再実行される通知処理では、図16(A)に示すステップS213〜S223の処理と同様に、ステップS226〜S236の処理が行われる。
このように、実施例6によれば、通知イベントリストを利用して電源供給遮断時の通知状況を迅速に判断することができ、当該判定された通知状況にしたがって、アプリケーションに対する通知を確実に行うことができる。さらに、実施例6では、実施例5と同様、必要となるメモリリソースの低減を図ることができる。
(変形例)
次に、図17を参照して、実施例1〜実施例6に共通する変形例について説明する。変形例は、アプリケーションの設定変更から通知処理の実行前までの間に、UIMカード12への電源供給が遮断された場合も考慮した実施例である。すなわち、アプリケーションの設定変更から通知処理の実行前までの間に、UIMカード12への電源供給が遮断された場合、設定は変更されているが通知がされないといった不整合が生じうる。そのため、変形例では、このような場合、アプリケーションの設定を変更前の状態に戻すように構成される。図17(A),(B)は、変形例において、UIMカード12が設定変更コマンドを受信したときの処理の一例を示すフローチャートであり、図17(C)は、当該処理中に電源供給が遮断しその後に電源供給が復旧したときの処理の一例を示すフローチャートである。図17(A)に示す処理は、実施例1〜実施例4に対応し、図17(B)に示す処理は、実施例5及び実施例6に対応する。また、図17(C)に示す処理は、実施例1〜実施例6に対応する。
図17(A)に示す処理では、OSは、先ず、設定変更中フラグ(設定変更中であることを示す情報)を記録する(ステップS301)。設定変更中フラグの記録では、例えば、設定変更中フラグを示す“F1”(h)が不揮発性メモリ124における所定の記憶領域(通知未完了フラグ及び通知完了フラグが記憶される領域とは異なる記憶領域)に記憶される(言い換えれば、“00”(h)が“F1”(h)に書き換えられる)。設定変更中フラグの記録後、ステップS302〜S307の処理(図7(A)に示すステップS101〜S106の処理と同様)が行われる。そして、OSは、ステップS307において、まだ選定されていないアプリケーションがない(つまり、全てのアプリケーションを選定した)と判定した場合(ステップS307:NO)、設定変更完了フラグ(設定変更完了であることを示す情報)を記録する(ステップS308)。設定変更完了フラグの記録では、例えば、設定変更完了フラグを示す“F2”(h)が不揮発性メモリ124における所定の記憶領域(通知未完了フラグ、通知完了フラグ、及び設定変更中フラグが記憶される領域とは異なる記憶領域)に記憶される(言い換えれば、“00”(h)が“F2”(h)に書き換えられる)。或いは、設定変更完了フラグの記録では、例えば、設定変更完了フラグを示す“F2”(h)が不揮発性メモリ124において設定変更中フラグが記憶される領域と同じ記憶領域)に記憶される。この場合、“F1”(h)が“F2”(h)に書き換えられる。設定変更完了フラグの記録後、実施例1のステップS107、実施例2のステップS127、実施例3のステップS147、または実施例4のステップS167へ移行して、上述した処理が行われる。
一方、図17(B)に示す処理では、OSは、図17(A)に示す処理と同様、設定変更中フラグを記録する(ステップS311)。設定変更中フラグの記録後、ステップS312及びS313の処理(図14(A)に示すステップS181及びS182の処理と同様)が行われる。次いで、OSは、図17(A)に示す処理と同様、設定変更完了フラグを記録する(ステップS314)。設定変更完了フラグの記録後、実施例5のステップS183、または実施例6のステップS213へ移行して、上述した処理が行われる。
一方、図17(C)に示す処理では、OSは、設定変更中の電源断であるか否かを判定する(ステップS315)。例えば、設定変更中フラグ及び設定変更完了フラグが双方とも記録されているかどうかが判定され、双方とも記録されている場合、OSは、設定変更中の電源断でないと判定し(ステップS315:NO)、実施例1のステップS115、実施例2のステップS135、実施例3のステップS155、実施例4のステップS175、実施例5のステップS195、または実施例6のステップS225へ移行し、上述した処理を行う。一方、設定変更中フラグが記録されており、且つ設定変更完了フラグが記録されていない場合(すなわち、アプリケーションの設定変更から通知処理の実行前までの間に、電源供給が遮断され、当該遮断後に電源供給が再開した場合)、OSは、設定変更中の電源断であると判定し(ステップS315:YES)、設定変更されたそれぞれのアプリケーションの設定を変更前の状態に戻す(ステップS316)。これにより、例えば、非接触通信プロトコル、或いはActivated/Deactivatedの状態が再設定前の状態に戻される。なお、設定変更中フラグが記憶される領域と、設定変更完了フラグが記憶される領域とが同じ記憶領域である場合の例では、ステップS315において、設定変更中フラグ“F1”(h)が記録されている場合、設定変更中の電源断であると判定される(ステップS315:YES)一方、設定変更完了フラグ“F2”(h)が記録されている場合、設定変更中の電源断でないと判定される(ステップS315:NO)ことになる。
このように、変形例によれば、アプリケーションの設定変更から通知処理の実行前までの間に電源供給が遮断された場合であっても、設定は変更されているが通知がされないといった不整合を防止することができる。
以上説明したように、実施例1〜6及び変形例を含む実施形態によれば、携帯端末1に搭載されたUIMカード12は、選択中の少なくとも何れか1つのアプリケーションの設定が変更される場合、設定変更されたアプリケーションを含む複数のアプリケーションの設定に基づいて、それぞれのアプリケーションの再設定を行い、通知対象となるアプリケーションに対して再設定されたことを示す設定変更情報を通知する通知処理を実行し、且つ通知状況を記録する。そして、UIMカード12は、上記通知処理中に電源供給が遮断され、当該遮断後に電源供給が復旧した場合、上記通知状況にしたがって、通知処理を再実行するように構成したので、設定変更の通知中に電源供給遮断が発生したとしても、不整合が発生することなくアプリケーションの動作を保障することができる。
なお、実施例1〜6及び変形例を含む実施形態では、設定変更されたアプリケーションを含む複数のアプリケーションの設定に基づいて、それぞれのアプリケーションに共通する再設定が行われた場合に、上記通知処理が実行され、当該通知処理中にUIMカード12への電源供給が遮断され、当該遮断後に電源供給が再開した場合、上記通知処理の状況にしたがって、当該通知処理が再実行される例について説明した。しかし、アプリケーションの設定が変更された場合に、複数のアプリケーションのうち通知対象となるアプリケーションに対して設定変更情報を通知する通知処理が実行され、当該通知処理中にUIMカード12への電源供給が遮断され、当該遮断後に電源供給が再開した場合、上記通知処理の状況にしたがって、当該通知処理が再実行されるように構成してもよい。つまり、共通の再設定の実施の有無、共通の再設定を実施した結果に関係なく、アプリケーションの設定変更のみを通知する通知処理が実行されてもよい。この場合の実施例を以下に説明する。
例えば、接触型ICチップ12aには、SDとして、ポイントサービス会社の管理アプリが搭載され、複数のアプリケーションとして、「ポイントカード一覧出力アプリ」、「ポイントカードアプリA」、「ポイントカードアプリB」、「ポイントカードアプリC」、及び「チケットアプリ」が搭載されているものとする。ここで、「ポイントカード一覧出力アプリ」は、Activated の状態にあるポイントカードアプリの一覧を出力する機能を持つ。なお、「ポイントカードアプリA」及び「ポイントカードアプリB」は、Activated の状態にある一方、「ポイントカードアプリC」は、Deactivatedの状態にあるものとする。
(通知ケース1)
「ポイントサービス会社の管理アプリ」が、「ポイントカードアプリA」をActivatedからDeactivatedの状態に変更(設定変更)した場合、上記通知処理では、関連するアプリケーションである「ポイントカードアプリA」と「ポイントカード一覧出力アプリ」が通知対象として選定され、選定された「ポイントカードアプリA」と「ポイントカード一覧出力アプリ」に対して上記設定変更情報が通知される。
(通知ケース2)
「ポイントサービス会社の管理アプリ」が、「ポイントカードアプリA」の通信速度を変更した場合、上記通知処理では、関連するアプリケーションである「ポイントカードアプリA」と「ポイントカード一覧出力アプリ」が通知対象として選定され、選定された「ポイントカードアプリA」と「ポイントカード一覧出力アプリ」に対して上記設定変更情報が通知される。
(通知ケース3)
「ポイントカードアプリA」が、「ポイントカードアプリA」をActivatedからDeactivatedの状態に自ら変更した場合、上記通知処理では、関連するアプリケーションである「ポイントカード一覧出力アプリ」が通知対象として選定され、選定された「ポイントカード一覧出力アプリ」に対して上記設定変更情報が通知される。この場合、「ポイントカードアプリA」は自ら設定変更したので、通知の必要はない。
なお、関連するかどうかは、例えば、設定変更されたアプリケーションかどうか、及び設定変更されたアプリケーションと紐付けられているかどうかの少なくとも何れか一方により決定される。また、設定変更されたアプリケーションとの紐付けは、コマンドによって指定することができる。例えば、設定変更されるアプリケーションと、当該設定変更がされたときに通知対象となるアプリケーションとの対応関係を示すリストを記憶しておくとよい。
図18(A)〜(C)は、設定変更されるアプリケーションと、当該設定変更がされたときに通知対象となるアプリケーションとの対応関係を示すリストの例を示す図である。なお、図18の例では、設定変更されるアプリケーションを、「変更アプリ」と称しており、当該設定変更がされたときに通知対象となるアプリケーションを、「通知アプリ」と称している。図18(A)に示すように、アプリケーション単位で通知アプリを紐づけて設定してもよいし、図18(B)に示すように、アプリケーションのデータ単位で紐づけて設定してもよい。また、図18(C)に示すように、全てのアプリケーションに対して通知アプリを紐づけて設定してもよく、この場合、上記の通知ケース1〜3において「チケットアプリ」が通知対象として選定され、当該「チケットアプリ」にも上記設定変更情報が通知されることになる。