(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-15
(45)【発行日】2022-11-24
(54)【発明の名称】処理装置、および、コンピュータプログラム
(51)【国際特許分類】
G06F 11/07 20060101AFI20221116BHJP
G06Q 30/02 20120101ALI20221116BHJP
【FI】
G06F11/07 169
G06F11/07 181
G06Q30/02 470
(21)【出願番号】P 2018110764
(22)【出願日】2018-06-10
【審査請求日】2021-05-28
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】藤原 奨
【審査官】山本 俊介
(56)【参考文献】
【文献】特開平02-016077(JP,A)
【文献】特開平01-246643(JP,A)
【文献】特開昭64-067648(JP,A)
【文献】特開2014-120064(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06N 3/00-99/00
G06Q 30/02
(57)【特許請求の範囲】
【請求項1】
特定の情報処理を実行する処理装置のためのコンピュータプログラムであって、
サーバから、第1の報知情報
と、前記第1の報知情報の使用条件を示す条件情報と、を受信する受信機能と、
前記サーバから受信した前記第1の報知情報
と前記条件情報とを
対応付けて第1の格納部に格納する格納処理機能と、
前記特定の情報処理の過程で発生する第1のイベントであって、ユーザへ情報の報知を行うべき前記第1のイベントが発生した場合に、前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されているか否かを判断する判断機能
であって、
前記第1のイベントが発生した場合に、前記条件情報によって示される前記使用条件が満たされるか否かを判断し、
前記使用条件が満たされる場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていると判断し、
前記使用条件が満たされない場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていないと判断する、
前記判断機能と、
前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されている場合に、前記第1のイベントに対応する前記第1の報知情報を用いて、ユーザへ情報を報知する第1の報知機能と、
前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されていない場合に、第2の格納部に格納されている第2の報知情報であって前記第1のイベントに対応する前記第2の報知情報を用いて、ユーザへ情報を報知する第2の報知機能と、
を前記処理装置に搭載されたコンピュータに実現させ、
前記第2の報知情報は、前記第1の報知情報が前記第1の格納部に格納されるよりも前に前記第2の格納部に格納される、コンピュータプログラム。
【請求項2】
請求項1に記載のコンピュータプログラムであって、
前記判断機能は、前記特定の情報処理の過程で発生する第2のイベントであって、ユーザへ情報の報知を行うべき前記第2のイベントが発生した場合に、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されているか否かを判断し、
前記第1の報知機能は、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されている場合に、前記第2のイベントに対応する前記第1の報知情報を用いて、ユーザへ情報を報知し、
前記第2の報知機能は、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されていない場合に、前記第2の格納部に格納されている前記第2の報知情報であって、前記第2のイベントに対応する前記第2の報知情報を用いて、ユーザへ情報を報知する、コンピュータプログラム。
【請求項3】
請求項
1または2に記載のコンピュータプログラムであって、
前記条件情報は、前記特定の情報処理の実行の過程でコールスタックに記録され得る特定の情報を示し、
前記判断機能は、
前記第1のイベントの発生時に、前記コールスタックに前記特定の情報が記録されているか否かを判断し、
前記コールスタックに前記特定の情報が記録されている場合に、前記条件情報が満たされると判断する、コンピュータプログラム。
【請求項4】
請求項1~
3のいずれかに記載のコンピュータプログラムであって、
前記第1のイベントに対応する前記第1の報知情報は、ユーザに対して報知されるべき第1のメッセージを含み、
前記第1のイベントに対応する前記第2の報知情報は、ユーザに対して報知されるべき第2のメッセージであって前記第1のメッセージとは異なる前記第2のメッセージを含む、コンピュータプログラム。
【請求項5】
請求項1~
4のいずれかに記載のコンピュータプログラムであって、
前記第1のイベントは、前記特定の情報処理の過程で発生する特定のエラーである、コンピュータプログラム。
【請求項6】
請求項1~
5のいずれかに記載のコンピュータプログラムであって、
前記サーバは、プッシュ通知サービスを実行するサーバであり、
前記第1の報知情報は、プッシュ通知サービスを用いて送信される、コンピュータプログラム。
【請求項7】
請求項1~
6のいずれかに記載のコンピュータプログラムであって、
前記受信機能は、前記第1の報知情報の受信後に、受信済みの前記第1の報知情報を削除することを指示する削除指示を受信し、
前記コンピュータプログラムは、さらに、
前記削除指示に従って、前記第1の格納部に格納済みの前記第1の報知情報を削除する削除機能を備える、コンピュータプログラム。
【請求項8】
請求項1~
7のいずれかに記載のコンピュータプログラムであって、
前記第2の報知情報は、前記コンピュータプログラムに組み込まれた状態で前記処理装置に取得される、コンピュータプログラム。
【請求項9】
請求項1~
8のいずれかに記載のコンピュータプログラムであって、
前記第1の格納部は、前記コンピュータプログラムによる書き込みと読み出しとの両方が許容されるメモリ領域であり、
前記第2の格納部は、前記第2の報知情報が格納された後は、前記コンピュータプログラムによる書き込みが禁止され、読み出しが許容されるメモリ領域である、コンピュータプログラム。
【請求項10】
特定の情報処理を実行する処理装置であって、
第1の格納部と、
サーバから、第1の報知情報
と、前記第1の報知情報の使用条件を示す条件情報と、を受信する受信部と、
前記サーバから受信した前記第1の報知情報
と前記条件情報とを
対応付けて前記第1の格納部に格納する格納処理部と、
前記第1の報知情報が前記第1の格納部に格納されるよりも前に第2の報知情報が格納される第2の格納部と、
前記特定の情報処理の過程で発生する第1のイベントであって、ユーザへ情報の報知を行うべき前記第1のイベントが発生した場合に、前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されているか否かを判断する判断部
であって、
前記第1のイベントが発生した場合に、前記条件情報によって示される前記使用条件が満たされるか否かを判断し、
前記使用条件が満たされる場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていると判断し、
前記使用条件が満たされない場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていないと判断する、
前記判断部と、
前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されている場合に、前記第1のイベントに対応する前記第1の報知情報を用いて、ユーザへ情報を報知する第1の報知部と、
前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されていない場合に、前記第2の格納部に格納されている前記第2の報知情報であって前記第1のイベントに対応する前記第2の報知情報を用いて、ユーザへ情報を報知する第2の報知部と、
を備える処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、特定の情報処理の過程で発生するイベントに応じてユーザへ情報を報知する技術に関する。
【背景技術】
【0002】
特許文献1に開示された技術では、サーバは、複数個の端末からアプリケーションのエラー情報と端末情報とを受信し、アプリケーションがエラーを起こす条件を判定する。サーバは、アプリケーションがエラーを起こす条件を満たす端末に、その旨を通知する。通知を受信した端末は、当該アプリケーションのアイコンとして、所定のエフェクトを加えたアイコンを表示し、通知を受信しない端末は、当該アプリケーションのアイコンとして、通常のアイコンを表示する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2014-52867号公報
【文献】特開2006-243911号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記技術では、アプリケーションの実行の過程における報知については何ら工夫がなされていなかった。また、単に、サーバからの通知に応じて、アイコンを切り替えているに過ぎなかった。このために、特定の情報処理(例えば、アプリケーションの実行処理)の過程で発生するイベントに応じて、適切な報知を行うことができない可能性があった。
【0005】
本明細書は、特定の情報処理の過程で発生するイベントに応じて、適切な報知を行うことができる技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【0007】
[適用例1]特定の情報処理を実行する処理装置のためのコンピュータプログラムであって、サーバから、第1の報知情報を受信する受信機能と、前記サーバから受信した前記第1の報知情報を第1の格納部に格納する格納処理機能と、前記特定の情報処理の過程で発生する第1のイベントであって、ユーザへ情報の報知を行うべき前記第1のイベントが発生した場合に、前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されているか否かを判断する判断機能と、前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されている場合に、前記第1のイベントに対応する前記第1の報知情報を用いて、ユーザへ情報を報知する第1の報知機能と、前記第1のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されていない場合に、第2の格納部に格納されている第2の報知情報であって前記第1のイベントに対応する前記第2の報知情報を用いて、ユーザへ情報を報知する第2の報知機能と、を前記処理装置に搭載されたコンピュータに実現させ、前記第2の報知情報は、前記第1の報知情報が前記第1の格納部に格納されるよりも前に前記第2の格納部に格納される、コンピュータプログラム。
【0008】
[適用例2]
適用例1に記載のコンピュータプログラムであって、
前記判断機能は、前記特定の情報処理の過程で発生する第2のイベントであって、ユーザへ情報の報知を行うべき前記第2のイベントが発生した場合に、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されているか否かを判断し、
前記第1の報知機能は、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されている場合に、前記第2のイベントに対応する前記第1の報知情報を用いて、ユーザへ情報を報知し、
前記第2の報知機能は、前記第2のイベントに対応する前記第1の報知情報が前記第1の格納部に格納されていない場合に、前記第2の格納部に格納されている前記第2の報知情報であって、前記第2のイベントに対応する前記第2の報知情報を用いて、ユーザへ情報を報知する、コンピュータプログラム。
[適用例3]
適用例1または2に記載のコンピュータプログラムであって、
前記受信機能は、さらに、前記第1の報知情報の使用条件を示す条件情報を受信し、
前記条件情報は、前記第1の報知情報と対応付けて前記第1の格納部に格納され、
前記判断機能は、
前記第1のイベントが発生した場合に、前記条件情報によって示される前記使用条件が満たされるか否かを判断し、
前記使用条件が満たされる場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていると判断し、
前記使用条件が満たされない場合に、前記第1のイベントに対応する前記第1の報知情報が格納されていないと判断する、コンピュータプログラム。
[適用例4]
適用例3に記載のコンピュータプログラムであって、
前記条件情報は、前記特定の情報処理の実行の過程でコールスタックに記録され得る特定の情報を示し、
前記判断機能は、
前記第1のイベントの発生時に、前記コールスタックに前記特定の情報が記録されているか否かを判断し、
前記コールスタックに前記特定の情報が記録されている場合に、前記条件情報が満たされると判断する、コンピュータプログラム。
[適用例5]
適用例1~4のいずれかに記載のコンピュータプログラムであって、
前記第1のイベントに対応する前記第1の報知情報は、ユーザに対して報知されるべき第1のメッセージを含み、
前記第1のイベントに対応する前記第2の報知情報は、ユーザに対して報知されるべき第2のメッセージであって前記第1のメッセージとは異なる前記第2のメッセージを含む、コンピュータプログラム。
[適用例6]
適用例1~5のいずれかに記載のコンピュータプログラムであって、
前記第1のイベントは、前記特定の情報処理の過程で発生する特定のエラーである、コンピュータプログラム。
[適用例7]
適用例1~6のいずれかに記載のコンピュータプログラムであって、
前記サーバは、プッシュ通知サービスを実行するサーバであり、
前記第1の報知情報は、プッシュ通知サービスを用いて送信される、コンピュータプログラム。
[適用例8]
適用例1~7のいずれかに記載のコンピュータプログラムであって、
前記受信機能は、前記第1の報知情報の受信後に、受信済みの前記第1の報知情報を削除することを指示する削除指示を受信し、
前記コンピュータプログラムは、さらに、
前記削除指示に従って、前記第1の格納部に格納済みの前記第1の報知情報を削除する削除機能を備える、コンピュータプログラム。
[適用例9]
適用例1~8のいずれかに記載のコンピュータプログラムであって、
前記第2の報知情報は、前記コンピュータプログラムに組み込まれた状態で前記処理装置に取得される、コンピュータプログラム。
[適用例10]
適用例1~9のいずれかに記載のコンピュータプログラムであって、
前記第1の格納部は、前記コンピュータプログラムによる書き込みと読み出しとの両方が許容されるメモリ領域であり、
前記第2の格納部は、前記第2の報知情報が格納された後は、前記コンピュータプログラムによる書き込みが禁止され、読み出しが許容されるメモリ領域である、コンピュータプログラム。
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、端末装置、特定の情報処理における報知方法、特定の情報処理における報知システム、処理装置と通信可能なサーバ、これら装置の機能または上記方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0009】
【
図1】システム1000の構成を示すブロック図である。
【
図2】プッシュ通知データPDの一例を示す図である。
【
図3】OSによる通知受信処理のフローチャートである。
【
図4】端末装置100の表示部170に表示される画面の一例を示す図である。
【
図5】アプリケーションAPPによる通知受信処理のフローチャートである。
【
図6】データベースDBとメッセージテーブルMTの一例を示す図である。
【
図7】メッセージ表示処理のフローチャートである。
【
図8】コールスタックCSに記録された情報の一例を示す。
【
図9】システム1000の動作例を示すシーケンス図である。
【発明を実施するための形態】
【0010】
A.第1実施例:
A-1:システム1000の構成
図1は、システム1000の構成を示すブロック図である。システム1000は、端末装置100と、プリンタ210、220と、制御サーバ300と、プッシュ通知サーバ400と、を備える。プリンタ210、220は、有線のローカルエリアネットワークLNに接続されている。ローカルエリアネットワークLNには、無線のアクセスポイントAPが接続されている。ローカルエリアネットワークLNは、例えば、イーサネット(登録商標)規格に準拠して構築された有線ネットワークである。アクセスポイントAPは、例えば、Wi-Fi規格に準拠した通信方式を利用したアクセスポイントである。ローカルエリアネットワークLNは、インターネットITに接続されている。制御サーバ300とプッシュ通知サーバ400とは、インターネットITに接続されている。
【0011】
端末装置100は、アクセスポイントAPとローカルエリアネットワークLNを介して、プリンタ210、220と、通信可能に接続されている。端末装置100は、アクセスポイントAPとローカルエリアネットワークLNとインターネットITとを介して、制御サーバ300およびプッシュ通知サーバ400と通信可能に接続されている。なお、端末装置100は、W-CDMAなどの携帯電話通信の方式に従う無線通信を行う基地局(図示省略)と、インターネットITと、を介して、制御サーバ300およびプッシュ通知サーバ400と接続されていても良い。
【0012】
端末装置100(
図1)は、プリンタ210、220のユーザが利用する端末装置であり、例えば、スマートフォンである。端末装置100は、端末装置100のコントローラーとしてのCPU110と、RAMなどの揮発性記憶装置120と、ハードディスクドライブなどの不揮発性記憶装置130と、タッチパネルなどの操作部160と、液晶ディスプレイなどの表示部170と、外部機器との通信のための通信IF180と、を備えている。
【0013】
通信IF180は、本実施例では、Wi-Fi規格に準拠した無線のインタフェースである。通信IF180は、上述したプリンタ210、220、制御サーバ300、および、プッシュ通知サーバ400との通信に用いられる。
【0014】
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、コンピュータプログラムPG1とデータベースDBとが格納されている。
【0015】
コンピュータプログラムPG1は、プリンタ210、220のベンダによって提供されるコンピュータプログラムであり、インターネットITを介して端末装置100に接続されたサーバからダウンロードされる形態で提供される。これに代えて、コンピュータプログラムPG1は、CD-ROMやDVD-ROMなどに格納された形態で提供されても良い。
【0016】
CPU110は、図示しないOSプログラムを実行することによって、所定のOS(オペレーティングシステム)としての機能を実現する。OSは、例えば、Android(登録商標)、iOS(登録商標)などのプッシュ通知サービスに対応したOSである。CPU110は、例えば、OSプログラムを実行することによって、後述するOSによる通知受信処理を実行する。
【0017】
CPU110は、例えば、上述した所定のOS上で、コンピュータプログラムPG1を実行することにより、プリンタ210、220を制御するアプリケーションAPPとしての機能を実現する。この機能は、例えば、プリンタ210、220のうちの制御対象のプリンタに、印刷指示や印刷データを含む印刷ジョブを送信して、制御対象のプリンタに印刷を実行させるプリンタ制御処理を実行する。なお、この機能は、ローカルエリアネットワークLNに接続されたスキャナ(図示省略)に原稿を読み取らせて、スキャンデータを生成させ、該スキャンデータをスキャナから取得するスキャナ制御処理を実行しても良い。また、CPU110は、後述するアプリケーションAPPによる通知受信処理を実行する。
【0018】
コンピュータプログラムPG1には、リソースファイルが組み込まれている。リソースファイルRFは、コンピュータプログラムPG1がインストールされる際に、アプリケーション(コンピュータプログラムPG1)による書き込みが禁止され、読み出しが許容されるメモリ領域に格納される。このために、リソースファイルRFは、アプリケーションAPPによる書き込みが禁止され、読み出しが許容されるファイル、すなわち、読み出し専用ファイルである。
【0019】
リソースファイルRFは、アプリケーションAPPが使用する各種の情報、例えば、テキスト、画像を含む。本実施例では、例えば、リソースファイルRFは、アプリケーションがユーザへ情報の報知やユーザからの指示の取得のためのUI画面に、表示するためのメッセージを含む。リソースファイルRFに格納されるデータについては後述する。
【0020】
データベースDBは、コンピュータプログラムPG1が最初に起動されたときに、アプリケーション(コンピュータプログラムPG1)による書き込みと読み出しと両方が許容されるメモリ領域に構築される。データベースDBには、受信されたプッシュ通知データPDに基づいて、アプリケーションAPPによってデータが格納される(詳細は後述)。リソースファイルRFに記録されるデータは、データベースDBに記録されるデータがデータベースDBに記録されるよりも前に、リソースファイルRFに記録される、ということができる。
【0021】
プリンタ210、220は、例えば、CPUとメモリを含む制御部(図示省略)と、該制御部の制御に従って印刷を行う印刷機構(図示省略)と、を備えている。印刷機構は、例えば、インクジェット方式や電子写真方式などの所定の方式で、用紙などの印刷媒体上に画像を印刷する。
【0022】
制御サーバ300は、例えば、プリンタ210、220のベンダによって提供されるサーバである。制御サーバ300は、制御サーバ300のコントローラーとしてのCPU310と、RAMなどの揮発性記憶装置320と、ハードディスクドライブなどの不揮発性記憶装置330と、インターネットITと接続するための通信IF380と、を備えている。
【0023】
揮発性記憶装置320は、CPU310が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置330は、コンピュータプログラムPG2を格納している。
【0024】
CPU310は、コンピュータプログラムPG2を実行することによって、例えば、操作者の指示に従って、プッシュ通知サーバ400に、プッシュ通知データPDの送信指示を送信する。制御サーバ300が実行する処理については後述する。
【0025】
プッシュ通知サーバ400は、プッシュ通知サービスを提供するサーバである。プッシュ通知サービスは、制御サーバ300の指示に応じて、プッシュ通知データPDを端末装置100に送信するサービスである。プッシュ通知データPDは、端末装置100にインストールされているコンピュータプログラムPG1によって実現されるアプリケーションAPPに関するデータを含む。プッシュ通知データPDは、アプリケーションAPP(コンピュータプログラムPG1)が端末装置100において起動しているか否かに拘わらず、制御サーバ300からの指示を契機として、送信される。プッシュ通知データPDは、アプリケーションAPPのユーザ宛に報知されるべき情報(例えば、テキストや画像)に限らず、アプリケーションAPPが用いるべきデータを含み得る。プッシュ通知データPDについては、さらに後述する。
【0026】
プッシュ通知サーバ400は、自身で、あるいは、他のサーバ(図示省略)を介して、端末装置100にプッシュ通知データPDを送信する。プッシュ通知サーバ400は、例えば、Android(登録商標)やiOS(登録商標)などの複数種類のプラットフォームでそれぞれ動作する各アプリケーションに対するプッシュ通知データPDを送信可能なFCM(Firebase Cloud Messagingの略)サーバである。以下では、「プッシュ通知サーバ400が端末装置100にプッシュ通知データPDを送信する」とは、プッシュ通知サーバ400が、直接、端末装置100にプッシュ通知データPDを送信すること、および、他のサーバが提供するサービスを利用してプッシュ通知データPDを端末装置100に送信すること、との両方を含む。
【0027】
A-2.プッシュ通知データPD
図2は、プッシュ通知データPDの一例を示す図である。
図2(A)のプッシュ通知データPD1は、ユーザ通知用のプッシュ通知データPD1である。プッシュ通知データPD1は、通知先識別子と、通知用データと、を含む。
【0028】
通知先識別子は、プッシュ通知データPDの送信先を示す識別子である。通知先識別子には、例えば、端末装置100とアプリケーションAPP(コンピュータプログラムPG1)との組み合わせに対して付与される識別子であるアプリインスタンスIDが用いられる。すなわち、アプリインスタンスIDは、送信先の端末装置100を識別するとともに、送信先の端末装置100にインストールされた1以上のアプリケーションプログラムのうち、プッシュ通知データPDの送信先のアプリケーションAPPを識別する。
【0029】
例えば、端末装置100においてアプリケーションAPPが最初に起動されたときに、アプリケーションAPPは、ユーザに対してプッシュ通知データPDを受信する許可を求めるUI画面を表示する。ユーザから許可を取得した場合に、アプリケーションAPPは、プッシュ通知サーバ400に対して、アプリインスタンスIDの生成要求を送信する。プッシュ通知サーバ400は、該生成要求を受信すると、アプリインスタンスIDを生成して、端末装置100に送信する。端末装置100のアプリケーションAPPは、アプリインスタンスIDを制御サーバ300に送信する。制御サーバ300は、アプリインスタンスIDを用いて、プッシュ通知データPDの送信先を指定することができる。
【0030】
プッシュ通知データPD1の通知用データ(
図2(A))は、タイトルと、メッセージと、を含む。通知用データは、端末装置100のユーザ(アプリケーションAPPのユーザ)に対して報知すべき内容を示す。
【0031】
図2(B)のプッシュ通知データPD2は、表示制御用のプッシュ通知データである。プッシュ通知データPD2は、上述した通知先識別子と、アプリ宛データと、を含む。アプリ宛データは、表示IDと、条件情報と、メッセージと、コマンドと、を含む。
【0032】
表示IDは、メッセージに対応付けられた識別子である。条件情報は、メッセージを使用するか否かを判断するための使用条件を示す情報である。メッセージは、表示すべき内容を示すテキストである。コマンドは、登録コマンドと、削除コマンドと、のいずれかである。登録コマンドは、プッシュ通知データPD2に含まれるアプリ宛データをデータベースDBに登録(格納)することを指示するコマンドである。削除コマンドは、プッシュ通知データPD2にて指定されるアプリ宛データであって、データベースDBに登録済みのアプリ宛データを、データベースDBから削除することを指示するコマンドである。
図2(B)のプッシュ通知データPD2は、登録コマンドを含む。
【0033】
図2(C)のプッシュ通知データPD3は、プッシュ通知データPD2と同様に、表示制御用のプッシュ通知データである。プッシュ通知データPD3は、削除コマンドを含む点がプッシュ通知データPD2と異なる。プッシュ通知データPD3は、上述した表示IDと、条件情報と、を含み、メッセージを含んでいない。プッシュ通知データPD1~PD3を用いた処理については、後述する。
【0034】
なお、図示は省略するが、プッシュ通知データPDは、通知用、かつ、表示制御用のプッシュ通知データである場合には、
図2(A)の通知用データと、
図2(B)、(C)のアプリ宛データと、の両方を含んでも良い。
【0035】
A-3.端末装置100の動作
A-3-1.OSによる通知受信処理
端末装置100のOS(CPU110)は、通信IF180を介してプッシュ通知サーバ400からプッシュ通知データPDを受信すると、OSによる通知受信処理を実行する。
図3は、OSによる通知受信処理のフローチャートである。
【0036】
S110では、CPU110は、受信されたプッシュ通知データPDは、上述した通知用データを含むか否かを判断する。例えば、受信されたプッシュ通知データPDが、
図2(A)のプッシュ通知データPD1である場合には、プッシュ通知データPDは、通知用データを含むと判断される。
【0037】
プッシュ通知データPDが通知用データを含む場合には(S110:YES)、S120にて、CPU110は、該通知用データを用いて、表示部170に通知ウインドウNWを表示する。プッシュ通知データPDが通知用データを含まない場合には(S110:NO)、CPU110は、S120をスキップする。
【0038】
図4は、端末装置100の表示部170に表示される画面の一例を示す図である。
図4(A)の例では、表示部170には、通知ウインドウNWが表示されている。この通知ウインドウNWは、
図2(A)のプッシュ通知データPD1が受信された場合に表示される。通知ウインドウNWは、アイコンAIと、タイトルTTと、ボタンBTa、BTbと、を含む。アイコンAIは、プッシュ通知データPD1に含まれる通知先識別子によって示されるアプリケーションAPPを示すアイコンである。タイトルTTは、プッシュ通知データPD1の通知用データに含まれるタイトルである。通知ウインドウNWにおいて「表示」のボタンBTaがユーザによって押下されると、CPU110は、プッシュ通知データPD1の通知用データに含まれるメッセージを表示する(図示省略)。通知ウインドウNWにおいて「閉じる」のボタンBTbがユーザによって押下されると、CPU110は、通知ウインドウNWを消去する。
【0039】
S130では、CPU110は、受信されたプッシュ通知データPDは、上述したアプリ宛データを含むか否かを判断する。例えば、受信されたプッシュ通知データPDが、
図2(B)のプッシュ通知データPD2である場合には、プッシュ通知データPDは、アプリ宛データを含むと判断される。
【0040】
プッシュ通知データPDがアプリ宛データを含む場合には(S130:YES)、S140にて、CPU110は、アプリ宛データを、揮発性記憶装置120あるいは不揮発性記憶装置130上の指定領域に格納して、OSによる通知受信処理を終了する。プッシュ通知データPDが宛先用データを含まない場合には(S130:NO)、CPU110は、S140をスキップして、OSによる通知受信処理を終了する。
【0041】
A-3-2.アプリケーションAPPによる通知受信処理
端末装置100のアプリケーションAPP(CPU110)は、上述した指定領域を監視しており、OSによって該指定領域にアプリ宛データが格納されると、アプリケーションAPPによる通知受信処理を実行する。
図5は、アプリケーションAPPによる通知受信処理のフローチャートである。
【0042】
S200では、CPU110は、指定領域に格納されたアプリ宛データを取得して、揮発性記憶装置120のバッファ領域に格納する。本ステップで取得されたアプリ宛データを処理対象のアプリ宛データと呼ぶ。
【0043】
S210では、CPU110は、処理対象のアプリ宛データに登録コマンドが含まれるか否かを判断する。例えば、処理対象のアプリ宛データが、
図2(B)のプッシュ通知データPD2に含まれるアプリ宛データである場合には、アプリ宛データに登録コマンドが含まれると判断される。
【0044】
処理対象のアプリ宛データに登録コマンドが含まれる場合には(S210:YES)、S220にて、CPU110は、処理対象のアプリ宛データをデータベースDB(
図1)に格納する。これによって、処理対象のアプリ宛データが登録される。
【0045】
図6は、データベースDBとメッセージテーブルMTの一例を示す図である。
図6(A)のデータベースDBには、1個のエントリENaが記録されている。このエントリENaは、
図2(B)のプッシュ通知データPD2のアプリ宛データが処理対象のアプリ宛データである場合に、記録されるエントリである。エントリENaは、アプリ宛データに含まれる表示IDと、条件情報と、データ(例えば、メッセージ)と、を含む。エントリENaは、さらに、アプリ宛データに含まれるデータの属性を示す情報を含む。アプリ宛データに含まれるデータがメッセージである場合には、属性は、テキストである。アプリ宛データに含まれるデータの属性は、例えば、画像データや音声データである場合がある。
【0046】
処理対象のアプリ宛データに登録コマンドが含まれない場合には(S210:NO)、S220はスキップされる。
【0047】
S230では、CPU110は、処理対象のアプリ宛データに削除コマンドが含まれるか否かを判断する。例えば、処理対象のアプリ宛データが、
図2(C)のプッシュ通知データPD3に含まれるアプリ宛データである場合には、アプリ宛データに削除コマンドが含まれると判断される。
【0048】
処理対象のアプリ宛データに削除コマンドが含まれる場合には(S230:YES)、S240にて、CPU110は、データベースDB(
図1)に格納済みのデータのうち、処理対象のアプリ宛データ対応するデータを削除して、アプリケーションAPPによる通知受信処理を終了する。
【0049】
例えば、
図2(B)のプッシュ通知データPD2のアプリ宛データが処理対象のアプリ宛データである場合には、データベースDBにおいて、該アプリ宛データに含まれる表示IDと条件情報とを含むエントリENaが特定される。そして、データベースDBからエントリENaの全体が削除される。
【0050】
アプリ宛データに削除コマンドが含まれない場合には(S230:NO)、CPU110は、S240をスキップして、アプリケーションAPPによる通知受信処理を終了する。
【0051】
A-3-3.メッセージ表示処理
次に、端末装置100のアプリケーションAPP(CPU110)によって実行されるメッセージ表示処理について説明する。アプリケーションAPPは、上述したように、プリンタ210、220を制御するプリンタ制御処理を実行するアプリケーションである。プリンタ制御処理の実行の過程では、表示部170に様々なメッセージを表示すべきイベントが発生する。例えば、エラーが発生した場合には、当該エラーの発生をユーザに報知するメッセージが表示部170に表示される。また、例えば、ユーザから印刷すべきファイルの選択指示や用いるべきプリンタの選択指示を取得する必要がある場合には、表示部170には、当該選択指示を取得するためのUI要素(プルダウンメニューなど)とともに、選択指示の入力を促すメッセージが表示される。プリンタ制御処理の実行の過程で発生するイベントであって、表示部170にメッセージを表示する契機となるイベントを、メッセージ表示イベントと呼ぶ。メッセージ表示イベントは、例えば、エラーの発生、ユーザから所定の指示が入力されたこと、制御対象のプリンタ210、220から所定のデータを受信したこと、などを含み得る。
【0052】
メッセージ表示イベントが発生した場合には、CPU110は、メッセージ表示処理を実行する。
図7は、メッセージ表示処理のフローチャートである。S300では、CPU110は、発生したメーセージ表示イベントに対応する表示IDを特定する。例えば、リソースファイルRFは、発生し得るメッセージ表示イベントのそれぞれに対応する表示IDを記録したテーブルを含んでいる(図示省略)。CPU110は、該テーブルを参照して対応する表示IDを特定する。メッセージ表示処理が開始される契機となったメッセージ表示イベントに対応する表示IDを注目表示IDとも呼ぶ。
【0053】
S310では、CPU110は、注目表示IDが、データベースDBに記録されているか否かを判断する。例えば、
図6(A)の例では、データベースDBには、1個の表示ID「ID_1」だけが記録されているので、注目表示IDが「ID_1」である場合には、注目表示IDがデータベースDBに記録されていると判断される。
【0054】
注目表示IDが、データベースDBに記録されている場合には(S310:YES)、S320にて、CPU110は、データベースDBに、注目表示IDに対応する条件情報が含まれるか否かを判断する。
図6(A)の例において、注目表示IDが「ID_1」である場合には、該注目表示ID「ID_1」を含むエントリENaに、条件情報「[3]SaveHistory(11, *)」が含まれる。このために、この場合には、データベースDBに、表示IDに対応する条件情報が含まれると判断される。なお、プッシュ通知データPD2(
図2(B))において、条件情報は省略され得るので、データベースDBのエントリENaには、条件情報が含まれない場合がある。その場合には、データベースDBに、表示IDに対応する条件情報が含まれないと判断される。
【0055】
注目表示IDに対応する条件情報が含まれる場合には(S320:YES)、S330にて、CPU110は、コールスタックCSに条件情報が含まれるか否かを判断する。コールスタックCSは、例えば、コンピュータプログラムPG1の実行中に、揮発性記憶装置120に確保されるLIFO(後入れ先出し)の記憶領域である。コールスタックCSには、プログラムの実行中において関数(サブルーチン)がコールされた履歴を特定できる情報が記録されている。具体的には、CPU110は、メッセージ表示イベントが発生した時点(例えば、エラーの発生時)においてコールスタックCSに記録されている情報を取得し、取得された情報に条件情報と一致する情報が含まれているか否かを判断する。
【0056】
図8は、コールスタックCSに記録された情報の一例を示す。
図8の例では、コールスタックCSは、[1]~[4]の4個のスタックフレームを含んでいる。例えば、[1]のスタックフレームは、メッセージ表示イベントが発生した時点で実行されていた関数に関する情報を示す。[2]のスタックフレームは、[1]のスタックフレームに対応する関数をコールした関数に関する情報を示す。同様に、[3]、[4]のスタックフレームは、それぞれ、[2]、[3]のスタックフレームに対応する関数をコールした関数に関する情報を示す。例えば、
図8の例では、[2]のスタックフレーム「write(11, 0xff00,0x5)」は、関数「write」がコールされて、2個の引数(11, 0xff00,0x5)が渡されたことを示している。[3]のスタックフレーム「SaveHistory(11, 0xff339b9)」は、関数「SaveHistory」がコールされて、2個の引数(11, 0xff339b9)が渡されたことを示している。ここで、「SaveHistory」は、印刷履歴情報を保存する関数であるとする。また、この関数に渡される1個目の引数が「11」である場合には、11個目の記憶領域に印刷履歴情報が保存されるものとする。
【0057】
コールスタックCSに記録された情報によって、どのような処理の実行過程を経てメッセージ表示イベントが発生したかが特定できる。このために、本実施例では、条件情報として、コールスタックCSに含まれ得る特定のスタックフレームを示す情報が用いられている。例えば、
図6(A)のエントリENaの条件情報は、「[3]SaveHistory(11, *)」である。このために、
図8の例のように、コールスタックCSに、[3]SaveHistory(11, *)が含まれる場合には、条件情報と一致する情報が含まれると判断される。ここで、条件情報において、2個目の引数「*」は、任意の数値を示すワイルドカードである。コールスタックCSに、[3]SaveHistory(11, *)が含まれることは、11個目の記憶領域に印刷履歴情報が保存される処理が実行された上で、メッセージ表示イベント(例えば、エラー)が発生したことを意味する。
【0058】
コールスタックCSに条件情報が含まれる場合には(S330:YES)、データベースDBに記録されたデータ(メッセージ)の使用条件が満たされたと判断できる。このために、この場合には、S340にて、CPU110は、データベースDBに記録されたメッセージを表示する。例えば、
図6(A)のデータベースDBの例において、注目表示IDが「ID_1」であり、コールスタックCSに「[3]SaveHistory(11, *)」が含まれる場合には、S340にて、例えば、表示部170に、
図4(B)に示す画面が表示される。
図4(B)の例では、表示部170に、
図6(A)のデータベースDBのエントリENaに含まれるメッセージMS1が表示されている。
【0059】
コールスタックCSに条件情報が含まれない場合には(S330:NO)、データベースDBに記録されたメッセージの使用条件が満たされないと判断できる。このために、この場合には、S350にて、CPU110は、リソースファイルRFに記録されたメッセージを表示する。
【0060】
具体的には、リソースファイルRFは、
図6(B)に示すメッセージテーブルMTを含んでいる。メッセージテーブルMTは、全ての表示IDに対応するエントリを1個ずつ含んでおり、各エントリは、表示IDと、データ(例えば、メッセージ)と、該データの属性を示す情報と、を含む。データがメッセージである場合には、属性は、テキストである。すなわち、メッセージテーブルMTには、全ての表示IDに対応するメッセージが記録されている。
図6(B)では、4個のエントリEN1~EN4だけが代表して図示されている。
【0061】
S350では、メッセージテーブルMTから注目表示IDに対応するメッセージが取得されて、表示部170に表示される。例えば、注目表示IDが「ID_1」であり、コールスタックCSに「[3]SaveHistory(11, *)」が含まれない場合には、S350にて、例えば、表示部170に、
図4(C)に示す画面が表示される。
図4(C)の例では、表示部170に、
図6(B)のメッセージテーブルMTのエントリEN1に含まれるメッセージMS2が表示されている。
【0062】
注目表示IDが、データベースDBに記録されていない場合には(S310:NO)、S350にて、CPU110は、リソースファイルRFに記録されたメッセージを表示する。例えば、例えば、注目表示IDが「ID_1」であっても、データベースDBに「ID_1」に対応するエントリENaがない場合には、S350にて、表示部170に、
図4(C)に示す画面が表示される。
【0063】
注目表示IDに対応する条件情報が含まれない場合には(S320:NO)、無条件でデータベースDBに記録されたデータ(メッセージ)が使用される。このために、この場合には、S340にて、CPU110は、データベースDBに記録されたメッセージを表示する。
【0064】
A-3-4.システム1000の具体的な動作例
図9は、システム1000の動作例を示すシーケンス図である。コンピュータプログラムPG1が市場にリリースされ、端末装置100にインストールされた時点では、データベースDBには、
図6(A)のエントリENaに示すようなデータは格納されていない。一方で、
図6(B)のメッセージテーブルMTは、リソースファイルRFに含まれる情報であるので、コンピュータプログラムPG1がインストールされて時点から不揮発性記憶装置130に格納されている。
【0065】
この状態で、アプリケーションAPP(CPU110)によるプリンタ制御処理の実行過程において、メッセージ表示イベントである印刷履歴情報の保存エラーが発生したとする(
図9のS1)。この場合には、S2にて、CPU110は、メッセージ表示イベントの発生に応じて、上述したメッセージ表示処理(
図7)を実行する。
【0066】
この時点では、データベースDBには、
図6(A)のエントリENaが記録されていないので、
図7のS310にて、注目表示ID(例えば、ID_1)はデータベースDBに記録されていないと判断され(
図7のS310:NO)、リソースファイルRFのメッセージテーブルMT(
図6(B))に記録されたメッセージが表示部170に表示される(
図4(C))。すなわち、この時点では、印刷履歴情報の保存エラーが発生した場合には、どのような状況で該保存エラーが発生した場合であっても、例えば、「保存に失敗しました」という汎用的なメッセージが表示部170に表示される。
【0067】
その後に、例えば、アプリケーションAPPのユーザからの報告などに基づいて、アプリケーションAPPでは、10個の印刷履歴情報が保存された状態で、11個目の印刷履歴情報を保存しようとすると、保存エラーが発生することが判明したとする。この場合には、アプリケーションAPPを提供するベンダは、制御サーバ300から、プッシュ通知送信指示をプッシュ通知サーバ400に対して送信する(
図9のS3)。このプッシュ通知送信指示は、
図2(B)のプッシュ通知データPD2を、コンピュータプログラムPG1がインストールされた全ての端末装置(例えば、端末装置100)に送信するように、指示する送信指示である。
【0068】
プッシュ通知サーバ400がプッシュ通知送信指示を受信すると、S4では、プッシュ通知サーバ400は、プッシュ通知送信指示に従って、
図2(B)のプッシュ通知データPD2を、端末装置100を含む送信対象の端末装置に対して送信する。S5では、プッシュ通知データPD2を受信したことに応じて、端末装置100(CPU110)は、OSによる通知受信処理(
図3)を実行する。S6では、端末装置100は、アプリケーションAPPによる通知受信処理(
図5)を実行する。この結果、
図6(A)に示すように、データベースDBにエントリENaが記録される(
図5のS210にてYES、S220)。
【0069】
データベースDBにエントリENaが記録された後に、アプリケーションAPP(CPU110)によるプリンタ制御処理の実行過程において、再度、印刷履歴情報の保存エラーが発生したとする(
図9のS7)。この場合には、S8にて、CPU110は、再度、上述したメッセージ表示処理(
図7)を実行する。
【0070】
この時点では、データベースDBには、
図6(A)のエントリENaが記録されているので、
図7のS310にて、注目表示ID(例えば、ID_1)はデータベースDBに記録されていると判断される(
図7のS310にてYES)。さらに、S7にて発生した保存エラーが、11個目の印刷履歴情報を保存しようとしとことに起因して発生した場合には、コールスタックにエントリENaに記録された条件情報が含まれるので(
図7のS330にてYES)、エントリENaに記録されたメッセージの使用条件は満たされる。したがって、データベースDBのエントリENaに記録されたメッセージが表示される(
図4(B))。すなわち、この時点では、11個目の印刷履歴情報を保存しようとしたことに起因して保存エラーが発生した場合には、より具体的にエラーについて説明するメッセージを表示し得る。例えば、
図4(B)に示すように、「履歴保存は10件までです。古いデータを削除してから保存してください。」というようなエラーへの対処法まで言及した適切なメッセージが表示部170に表示される。
【0071】
以上説明した本実施例によれば、第1のメッセージ表示イベント(例えば、11個目の印刷履歴情報の保存エラー)が発生した場合に、該メッセージ表示イベントに対応する報知情報(例えば、エントリENaに記録された情報)がデータベースDBに格納されているか否かが判断される(
図7のS310~S330等)。該メッセージ表示イベントに対応する報知情報がデータベースDBに格納されている場合に(例えば、
図7のS310にてYES、かつ、S330にてYES)、データベースDBに格納されている報知情報を用いて、ユーザへ情報が報知される(
図7のS340、
図4(B))。該メッセージ表示イベントに対応する報知情報がデータベースDBに格納されていない場合に(例えば、
図7のS310にてNO、あるいは、S330にてNO)、リソースファイルRFに格納されている報知情報(例えば、メッセージテーブルMTに記録されたメッセージ)を用いて、ユーザへ情報が報知される(
図7のS340、
図4(C))。
【0072】
この結果、プッシュ通知サーバ400からのプッシュ通知によって報知情報を端末装置100に送信しておくことで、第1のメッセージ表示イベントが発生した場合に、端末装置100は、プッシュ通知によって送信される報知情報を用いてユーザへ情報を報知できる。また、プッシュ通知サーバ400からプッシュ通知を送信しなくても、第1のメッセージ表示イベントが発生した場合に、端末装置100は、リソースファイルRFに格納された報知情報を用いてユーザへ情報を報知できる。したがって、端末装置100は、プリンタ制御処理の過程で発生するイベントに応じて、適切な報知を行うことができる。例えば、上述したように、リソースファイルRFに格納された報知情報を用いた報知よりも、他の報知情報を用いた報知が適切であることが判明した場合には、プッシュ通知によって当該他の報知情報を端末装置100に送信することで、端末装置100は、当該他の報知情報を用いた報知を行うことができる。
【0073】
さらに、上記実施例によれば、第1のメッセージ表示イベントとは異なるイベントであっても、メッセージを表示すべきイベントが発生すれば、
図7のメッセージ表示処理が行われる。すなわち、第2のメッセージ表示イベント(例えば、保存エラーとは異なるエラー)が発生した場合に、第2のメッセージ表示イベントに対応する報知情報がデータベースDBに格納されているか否かが判断される(
図7のS310~S330等)。第2のメッセージ表示イベントに対応する報知情報がデータベースDBに格納されている場合に(例えば、
図7のS310にてYES、かつ、S330にてYES)、データベースDBに格納されている報知情報を用いて、ユーザへ情報が報知される(
図7のS340、
図4(B))。第2のメッセージ表示イベントに対応する報知情報がデータベースDBに格納されていない場合に(例えば、
図7のS310にてNO、あるいは、S330にてNO)、リソースファイルRFに格納されている報知情報(例えば、メッセージテーブルMTに記録されたメッセージ)を用いて、ユーザへ情報が報知される(
図7のS340、
図4(C))。したがって、プリンタ制御処理の過程で発生する複数個のイベントに応じて、適切な報知を行うことができる。
【0074】
さらに、上記実施例によれば、端末装置100は、プッシュ通知によって報知情報(メッセージ)の使用条件を示す条件情報(例えば、
図6(A)の「[3]SaveHistory(11, *)」)を受信する。該条件情報は、報知情報と対応付けてデータベースDBに格納される(
図6(A))。端末装置100は、メッセージ表示イベントが発生した場合に、条件情報によって示される使用条件が満たされるか否かを判断する(
図7のS330)。使用条件が満たされる場合に(
図7のS340にてYES)、データベースDBに対応する報知情報が格納されていると判断されて、該報知情報を用いた報知が行われる(
図7のS340)。そして、使用条件が満たされない場合に(
図7のS340にてNO)、データベースDBに対応する報知情報が格納されていないと判断されて、リソースファイルRFに格納された報知情報を用いた報知が行われる(
図7のS350)。この結果、プッシュ通知サーバ400から受信される条件情報を用いて、データベースDBに格納された報知情報を用いた報知と、リソースファイルRFに格納された報知情報を用いた報知と、が適切に切り替えられる。
【0075】
さらに、条件情報は、プリンタ制御処理の実行の過程でコールスタックに記録され得る特定の情報(例えば、
図6(A)の「[3]SaveHistory(11, *)」)を含む。端末装置100は、コールスタックに当該特定の情報が記録されている場合に、使用条件が満たされると判断する。この結果、データベースDBに格納された報知情報が用いられるべきか否かを適切に判断できる。
【0076】
さらに、上記実施例では、データベースDBに格納される報知情報は、第1のメッセージ表示イベントに対応する第1のメッセージ(例えば、
図6(A)のエントリENaに含まれるメッセージ)を含む。そして、リソースファイルRFに格納される報知情報は、特定のメッセージ表示イベントに対応する第2のメッセージ(例えば、
図6(B)のエントリEN1に含まれるメッセージ)を含む。第1のメッセージと第2のメッセージとは互いに異なっている。この結果、プッシュ通知サーバ400からプッシュ通知データPD2が端末装置100に送信されることで、端末装置100は、処理装置は、第1のメッセージ表示イベントが発生した場合に報知されるメッセージを、第2のメッセージから第1のメッセージに変更できる。
【0077】
さらに、上記実施例では、第1のメッセージ表示イベントは、プリンタ制御処理の過程で発生する特定のエラー(具体的には、11個目の印刷履歴情報の保存エラー)である。したがって、プッシュ通知サーバ400から報知情報が端末装置100に送信されることで、端末装置100は、特定のエラーが発生した場合行われるユーザへの報知を変更できる。どのようなエラーが発生するかをコンピュータプログラムPG1がリリースされた時点で完全に把握することは困難である。このために、事後的に、プッシュ通知サーバ400から報知情報を送信することで、エラーが発生した場合行われるユーザへの報知を変更できれば便利である。
【0078】
さらに、上記実施例では、データベースDBに格納されるべき報知情報は、プッシュ通知サービスを用いて送信されるので、端末装置100は、容易に、適切なタイミングで、報知情報を受信することができる。
【0079】
さらに、上記実施例では、端末装置100は、プッシュ通知サーバ400から、受信済みの報知情報を削除することを指示する削除コマンドを含むプッシュ通知データPD3(
図2(C))を受信し得る。端末装置100は、削除コマンドに従って、データベースDBに格納済みの報知情報を削除する(
図5のS230、S240)。この結果、例えば、プッシュ通知サーバ400から削除コマンドが端末装置100に送信されることで、端末装置100は、第1のメッセージ表示イベントが発生した場合に行われる報知を、データベースDBに格納された報知情報を用いた報知から、リソースファイルRFに格納された報知情報を用いた報知に戻すことができる。例えば、端末装置100のOSがアップデートされることによって、上述した11個目の印刷履歴情報の保存エラーが発生しなくなる場合がある。このような場合であっても、プッシュ通知サーバ400から削除コマンドを含むプッシュ通知データPD3が端末装置100に送信されることで、容易に、データベースDBからエントリENaが削除される。このような場合には、11個目の印刷履歴情報を保存した際に、偶然に、他の原因によって保存エラーが発生した場合に、データベースDBのエントリENaに含まれるメッセージが表示されることを防止できる。
【0080】
また、上記実施例では、リソースファイルRFに記録された報知情報は、コンピュータプログラムPG1に組み込まれた状態で端末装置100に取得される。このようなリソースファイルRFは、書き込みが許容されないメモリ領域に格納されるので、容易には、変更できない。例えば、リソースファイルRFの内容を変更する方法として、コンピュータプログラムPG1のバージョンアップを行う方法がある。このような方法は、例えば、新たなバージョンのコンピュータプログラムPG1の審査手続きが必要な場合がある等から、容易に行える方法であるとは言い難い。本実施例によれば、リソースファイルRFに格納された報知情報を用いて実行されていた報知の内容を、事後的に、容易に変更することができる。
【0081】
C.変形例:
(1)上記実施例では、データベースDBのエントリENaにおいて、表示IDと条件情報との組み合わせに、報知情報としてのメッセージを対応付けている。そして、表示IDと条件情報との組み合わせによって、メッセージを用いるべきメッセージ表示イベント(例えば、11個目の印刷履歴情報の保存エラー)が発生したか否かを判断している。これに代えて、表示IDのみで、メッセージを用いるべきメッセージ表示イベントが発生したか否かを判断しても良い。この場合には、条件情報は不要であり、
図7の320、330は省略されても良い。
【0082】
(2)上記実施例では、条件情報として、コールスタックに記録され得る情報が用いられる。これに代えて、他の種類の条件情報が用いられても良い。例えば、対応するメッセージを用いるべき期間、例えば、「4月1日から8月31日まで」などの期間を示す情報が条件情報として用いられても良い。こうすれば、プッシュ通知データを用いて、特定の期間だけ、特定のメッセージ表示イベント発生時に表示されるメッセージを容易に変更することができる。
【0083】
(3)上記実施例では、データベースDBに記録されるアプリ宛データは、プッシュ通知データとして送信される。これに代えて、他の送信手段を用いて、アプリ宛データが端末装置100に送信されても良い。例えば、アプリケーションAPP(コンピュータプログラムPG1)の起動時に、端末装置100は、プッシュ通知サーバ400または制御サーバ300に、新たなアプリ宛データの有無を問い合わせてもよい。この場合には、プッシュ通知サーバ400または制御サーバ300は、新たなアプリ宛データがある場合には、該問い合わせに対する応答として、新たなアプリ宛データを、端末装置100に送信しても良い。ただし、実施例のように、プッシュ通知データPD2を用いる場合には、プッシュ通知サーバ400は、コンピュータプログラムPG1が起動されているか否かに拘わらずに、あるいは、端末装置100からの問い合わせの有無に拘わらずに、任意のタイミングで、アプリ宛データを送信できる。
【0084】
(4)上記実施例では、削除コマンドを含むプッシュ通知データPD3が端末装置100に送信されることによって、データベースDBから不要となってエントリENaを削除することができる。このようなエントリENaを削除する仕組みは省略されても良い。例えば、データベースDBに、同一のメッセージ表示イベントに対応する複数個のエントリが存在する場合には、複数個のエントリのうち、最後に記録されたエントリ、すなわち、最後にプッシュ通知サーバ400から送信されたアプリ宛データに基づくエントリの報知情報が用いられる。
【0085】
(5)上記実施例では、メッセージテーブルMT(
図6(B))は、コンピュータプログラムPG1に組み込まれたリソースファイルRFに含まれている。これに代えて、メッセージテーブルMTは、最初にコンピュータプログラムPG1が起動されたときに、制御サーバ300から取得されても良い。このとき、メッセージテーブルMTは、コンピュータプログラムPG1による書き込みと読み出しとの両方が許容されるメモリ領域に格納されても良い。
【0086】
(6)上記実施例では、データベースDBやメッセージテーブルMTに記録された報知情報は、表示部170に表示されるメッセージである。これに代えて、または、これとともに、報知情報は、端末装置100のスピーカーから出力される音声情報であっても良いし、表示部170に表示される画像情報(JPEGデータなど)であっても良い。
【0087】
(7)上記実施例では、データベースDBやリソースファイルRFを保持し、
図3、
図5、
図7の処理を実行する装置は、端末装置100である。これに代えて、データベースDBやリソースファイルRFを保持し、
図3、
図5、
図7の処理を実行する装置は、プリンタ210のCPUであっても良い。この場合には、プッシュ通知サーバ400は、プリンタ210に対して、プッシュ通知データPD2、PD3を送信する。こうすれば、プッシュ通知サーバ400からプリンタ210に対してプッシュ通知データPD2、PD3が送信されることで、プリンタ210は、自身の表示部に表示するメッセージを変更できる。
【0088】
(8)上記実施例では、制御サーバ300とプッシュ通知サーバ400とは別体のサーバであるが、制御サーバ300とプッシュ通知サーバ400の機能は、1個のサーバによって実現されても良い。また、制御サーバ300とプッシュ通知サーバ400とは、それぞれ、1個の計算機ではなく、通信可能に接続された複数個の計算機から構成されるいわゆるクラウドサーバであっても良い。
【0089】
(9)上記実施例では、アプリケーションAPPが実行する処理は、プリンタ制御処理であるが、これに限られない。例えば、アプリケーションAPPが実行する処理は、上述したようにスキャナ制御処理であっても良い。また、例えば、アプリケーションAPPが実行する処理は、他のデバイスを制御する処理に限らず、ゲーム、SNS(SOCIAL NETWORK SERVICEの略)などの他のサービスや機能を実現する処理であっても良い。
【0090】
(10)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【0091】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0092】
100…端末装置、110…CPU、120…揮発性記憶装置、130…不揮発性記憶装置、160…操作部、170…表示部、180…通信IF、210、220…プリンタ、300…制御サーバ、310…CPU、320…揮発性記憶装置、330…不揮発性記憶装置、380…通信IF、400…プッシュ通知サーバ、1000…システム、DB…データベース、PD…プッシュ通知データ、RF…リソースファイル、LN…ローカルエリアネットワーク、AP…アクセスポイント、CS…コールスタック、IT…インターネット、MT…メッセージテーブル、PG1、PG2…コンピュータプログラム