(57)【要約】【課題】  プッシュ通知のための通信を適切な期間、継続できるようにする。【解決手段】  本発明に係る通信装置は、通知装置から中継装置を介してプッシュ通知を受信する受信手段と、受信手段によりプッシュ通知を受信するためのサブスクリプション情報と、サブスクリプション情報の有効期間を示すタイムアウト情報とを、中継装置と共有する共有手段と、共有手段により中継装置と共有されるタイムアウト情報に基づいて、サブスクリプション情報の有効期間を更新するための更新処理を中継装置に対し要求する更新手段と、を備える。【選択図】  図１
2019101976.tif 000002
【特許請求の範囲】
【請求項１】
通知装置から中継装置を介してプッシュ通知を受信する受信手段と、
前記受信手段により前記プッシュ通知を受信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記中継装置と共有する共有手段と、
前記共有手段により前記中継装置と共有される前記タイムアウト情報に基づいて、前記サブスクリプション情報の有効期間を更新するための更新処理を前記中継装置に対し要求する更新手段と、を備えることを特徴とする通信装置。
【請求項２】
前記更新手段は、前記プッシュ通知の受信に応じて、前記更新処理を要求することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記共有手段は、前記中継装置にサブスクライブを行って、前記中継装置から前記サブスクリプション情報を取得することを特徴とする請求項１または請求項２に記載された通信装置。
【請求項４】
前記サブスクリプション情報を生成する生成手段をさらに備え、
前記共有手段は、前記生成したサブスクリプション情報を前記中継装置と共有することを特徴とする請求項１または請求項２に記載された通信装置。
【請求項５】
前記共有手段は、前記更新処理に応じて更新された前記タイムアウト情報を取得することを特徴とする請求項１から請求項４のいずれか一項に記載された通信装置。
【請求項６】
前記更新手段は、前記サブスクリプション情報の有効期間の終了までの時間が所定時間未満である場合において、前記更新処理を要求する、ことを特徴とする請求項１から請求項５のいずれか一項に記載された通信装置。
【請求項７】
前記更新手段は、前記サブスクリプション情報に含まれる、プッシュ通知の受信のための識別子を用いて、前記更新処理の要求を行う、ことを特徴とする請求項１から請求項６のいずれか一項に記載された通信装置。
【請求項８】
前記サブスクリプション情報の少なくとも一部と共に、前記中継装置のアドレスを前記通知装置へ送信する送信手段をさらに備える、ことを特徴とする請求項１から請求項７のいずれか一項に記載された通信装置。
【請求項９】
前記通知装置および前記中継装置とは、ＨＴＴＰ／２を用いて通信する、ことを特徴とする請求項１から請求項８のいずれか一項に記載された通信装置。
【請求項１０】
前記タイムアウト情報は、ＨＴＴＰヘッダに付与されることを特徴とする請求項９に記載の通信装置。
【請求項１１】
通信装置へ中継装置を介してプッシュ通知を送信する通知装置であって、
前記プッシュ通知を前記通信装置へ送信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記通信装置と共有する共有手段と、
前記共有手段により共有される前記サブスクリプション情報と前記タイムアウト情報とに基づいて、前記プッシュ通知を送信する送信手段と、
前記送信手段による前記プッシュ通知の送信に応じて、前記中継装置から更新されたタイムアウト情報を取得する取得手段と、を備えることを特徴とする通知装置。
【請求項１２】
通知装置から受信したプッシュ通知を通信装置に送信する送信手段と、
前記送信手段により前記プッシュ通知を送信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記通信装置と共有する共有手段と、
前記サブスクリプション情報の有効期間を更新するための前記通信装置による更新要求に応じて、前記タイムアウト情報を更新する更新手段と、を備えることを特徴とする中継装置。
【請求項１３】
中継装置を介して通知装置から通信装置へプッシュ通知される通信システムであって、
前記中継装置と前記通信装置との間で、前記プッシュ通知のためのサブスクリプション情報と前記サブスクリプション情報の有効期間を示すタイムアウト情報とを共有する共有手段と、
前記サブスクリプション情報と前記タイムアウト情報を前記通信装置から前記通知装置に送信する送信手段と、
前記サブスクリプション情報に従って、前記通知装置からの前記プッシュ通知を、前記中継装置を介して前記通信装置へ通知する通知手段と、
前記通信装置が、前記タイムアウト情報に基づいて前記サブスクリプション情報の有効期間を更新するための更新処理を前記中継装置に対し要求する要求手段と、を備えることを特徴とする通信システム。
【請求項１４】
通知装置から中継装置を介してプッシュ通知を受信する受信工程と、
前記受信工程により前記プッシュ通知を受信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記中継装置と共有する共有工程と、
前記共有工程により前記中継装置と共有される前記タイムアウト情報に基づいて、前記サブスクリプション情報の有効期間を更新するための更新処理を前記中継装置に対し要求する更新工程と、を備えることを特徴とする通信装置の制御方法。
【請求項１５】
通信装置へ中継装置を介してプッシュ通知を送信する通知装置の制御方法であって、
前記プッシュ通知を前記通信装置へ送信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記通信装置と共有する共有工程と、
前記共有工程により共有される前記サブスクリプション情報と前記タイムアウト情報とに基づいて、前記プッシュ通知を送信する送信工程と、
前記送信工程による前記プッシュ通知の送信に応じて、前記中継装置から更新されたタイムアウト情報を取得する取得工程と、を備えることを特徴とする通知装置の制御方法。
【請求項１６】
通知装置から受信したプッシュ通知を通信装置に送信する送信工程と、
前記送信工程により前記プッシュ通知を送信するためのサブスクリプション情報と、前記サブスクリプション情報の有効期間を示すタイムアウト情報とを、前記通信装置と共有する共有工程と、
前記サブスクリプション情報の有効期間を更新するための前記通信装置による更新要求に応じて、前記タイムアウト情報を更新する更新工程と、を備えることを特徴とする中継装置の制御方法。
【請求項１７】
コンピュータに、請求項１４から請求項１６のいずれか一項に記載の制御方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プッシュ通知のための通信装置、通知装置、中継装置、通信システム、各装置の制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年、スマートフォン等の機器やブラウザにイベントや状況の変化を通知するプッシュ通知が広く使われるようになってきた。ＩＥＴＦ（Ｔｈｅ  Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）では、ウェブ技術を用いたプッシュ通知の方式としてＷｅｂＰｕｓｈが提案されている。
【０００３】
ＷｅｂＰｕｓｈは、ＰＳ（ＰｕｓｈＳｅｒｖｅｒ）、ＵＡ（ＵｓｅｒＡｇｅｎｔ）および、ＡＳ（ＡｐｐｌｉｃａｔｉｏｎＳｅｒｖｅｒ）から構成されるシステムである。それら３者間でプッシュ通知するために必要なサブスクリプション情報を共有することによりプッシュ通知を実現している。ＷｅｂＰｕｓｈにおいて、ＰＳは大量の購読配信を処理する場合がある。
【０００４】
特許文献１は、サブスクリプション情報が利用されなくなってから任意の時間（有効期限）が経過するとサブスクリプション情報を利用不可とすることで、ＰＳに相当する装置の処理負荷を軽減する方法について開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２０６７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プッシュ通知を実現するシステムにおいてタイムアウトしたサブスクリプション情報を利用不可にすることには、以下のような課題があった。例えばＷｅｂＰｕｓｈにおいて、ＰＳがタイムアウトによりサブスクリプション情報を利用不可としていることをＵＡ又はＡＳが知らない場合が考えられる。この場合にＰＳが、ＵＡまたはＡＳから既にタイムアウトしたサブスクリプション情報を用いたプッシュ通知の送信要求や待受け要求を受け取ることにより、余分な処理負荷がかかる虞がある。
【０００７】
またＵＡは、ＰＳから提供されたサブスクリプション情報がタイムアウトによって急に使えなくなることにより、ＡＳからのプッシュ通知を受け取れなくなる虞がある。また、ＡＳは、ＰＳまたはＵＡから提供されたサブスクリプション情報がタイムアウトによって急に使えなくなることにより、プッシュ通知を行えなくなる虞がある。
【０００８】
本発明は、上記の課題を鑑みてなされたものであり、その目的は、プッシュ通知のための通信を適切な期間、継続できるようにすることである。
【課題を解決するための手段】
【０００９】
この課題を解決するため、例えば、本発明の通信装置は、通知装置から中継装置を介してプッシュ通知を受信する受信手段と、受信手段によりプッシュ通知を受信するためのサブスクリプション情報と、サブスクリプション情報の有効期間を示すタイムアウト情報とを、中継装置と共有する共有手段と、共有手段により中継装置と共有されるタイムアウト情報に基づいて、サブスクリプション情報の有効期間を更新するための更新処理を中継装置に対し要求する更新手段と、を備える。
【発明の効果】
【００１０】
プッシュ通知のための通信を適切な期間継続できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る通信システム１００の構成図。
【図２】通信装置１０１のハードウェア構成を示すブロック図。
【図３】通信装置１０１のモジュール構成を示すブロック図。
【図４】中継装置１０２のモジュール構成を示すブロック図。
【図５】通知装置１０３のモジュール構成を示すブロック図。
【図６】中継装置１０２の保持するサブスクリプション情報を示す図。
【図７】本実施形態に係る各装置の処理を示すシーケンス図。
【図８】通信装置１０１におけるプッシュ通知の待受け時の処理を示すフローチャート。
【図９】通信装置１０１のプッシュ通知受信時の処理を示すフローチャート。
【図１０】中継装置１０２のサブスクライブ処理のフローチャート。
【図１１】中継装置１０２のプッシュ通知待受け開始処理を示すフローチャート。
【図１２】中継装置１０２のプッシュ通知送受信処理を示すフローチャート。
【図１３】通知装置１０３のプッシュ通知送信処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面に従って本発明に係る実施形態を詳細に説明する。
＜実施形態１＞
図１は、実施形態１に係る通信システム１００の構成図である。本実施形態では、通信システム１００は、１以上の通信装置（通信装置１０１，１０４，１０５）と１以上の通知装置（通知装置１０３，１０６）が中継装置１０２を介して接続されている。以下の説明では、その中の１つの通信装置１０１と１つの通知装置１０３との通信に注目して説明を行う。
【００１３】
通信システム１００は、通信装置１０１と、中継装置１０２と、通知装置１０３とを備える。通信装置１０１、中継装置１０２、通知装置１０３はそれぞれ有線及び／又は無線で接続され、相互に通信を行って、イベントの通知を行う。
【００１４】
本実施形態において、通信装置１０１および通知装置１０３は、ＨＴＴＰ／２（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ２）において規定されるクライアントとして動作する。中継装置１０２は、ＨＴＴＰ／２において規定されるサーバとして動作する。すなわち、通信装置１０１および通知装置１０３は、中継装置１０２にＨＴＴＰリクエストを送信し、中継装置１０２は受信したＨＴＴＰリクエストに応じて通信装置１０１および通知装置１０３にＨＴＴＰレスポンスを送信する。
【００１５】
通信装置１０１および通知装置１０３は、例えば、デジタルカメラ、デジタルビデオカメラ、ネットワークカメラ、プリンタ、デジタル複合機、デジタルテレビ、プロジェクタ、携帯電話、スマートフォン、ＰＣ、及びサーバ装置などである。また、中継装置１０２は、例えば、携帯電話、スマートフォン、ＰＣ、サーバ装置、ネットワークスイッチ、及びルータなどである。
【００１６】
通信装置１０１、中継装置１０２および通知装置１０３は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、又はそれらの組み合わせにより接続される。ＬＡＮとしては、Ｅｔｈｅｒｎｅｔ（登録商標）に則った有線ＬＡＮや、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．１１シリーズに則った無線ＬＡＮなどが用いられる。ＷＡＮとしては、例えばインターネットなどが用いられる。なお、通信装置１０１、中継装置１０２および通知装置１０３は、Ｂｌｕｅｔｏｏｔｈ（登録商標）やＺｉｇｂｅｅ（登録商標）など他の通信方式に基づいて接続されてもよい。
【００１７】
通信装置１０１は、ＷｅｂＰｕｓｈのＵＡ（ＵｓｅｒＡｇｅｎｔ）の機能を持つ。中継装置は、ＷｅｂＰｕｓｈのＰＳ（ＰｕｓｈＳｅｒｖｅｒ）の機能を持つ。通知装置１０３は、ＷｅｂＰｕｓｈのＡＳ（ＡｐｐｌｉｃａｔｉｏｎＳｅｒｖｅｒ）の機能を持つ。そして、これらの装置はサブスクリプション情報を共有することで、プッシュ通知を実現する。
【００１８】
ＷｅｂＰｕｓｈにおけるサブスクリプション情報には、プッシュ通知を識別するためのプッシュＵＲＩ、プッシュ通知の受信のためのプッシュメッセージサブスクリプションＵＲＩ、プッシュメッセージサブスクリプションＵＲＩをまとめて管理するためのプッシュメッセージサブスクリプションセットＵＲＩが含まれている。
【００１９】
通信装置１０１や通知装置１０３がＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）やＦＷ（Ｆｉｒｅｗａｌｌ）を用いたネットワークに接続している場合、通信装置１０１と通知装置１０３間で直接通信ができない。このような場合は、他の通信方式（例えば、Ｂｌｕｅｔｏｏｔｈ、ＷｉＦｉ  Ｄｉｒｅｃｔのような近接通信や、３Ｇ、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）のような公衆網）、画像やＱＲコード（登録商標）を用いてサブスクリプション情報を共有する。また、ユーザが手動で入力してもよい。更に、サブスクリプション情報を直接共有するだけでなく、サブスクリプション情報を管理するための情報管理装置（不図示）から取得するための識別子および鍵情報を利用してもよい。本実施形態では簡単化のために情報管理装置を用いたシステムでは記載していないが、サブスクリプション情報を受け渡す時は、全て情報管理装置に登録、削除、更新を行うことでサブスクリプション情報の取り扱いを行ってもよい。情報管理装置は、例えば、クラウドやサーバ上で管理されるソフトウェアであってもよい。
【００２０】
図２は、通信装置１０１のハードウェア構成を示すブロック図である。なお、中継装置１０２および通知装置１０３も、通信装置１０１と同様の構成である。
【００２１】
通信装置１０１は、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、補助記憶装置２０４と、表示部２０５と、操作部２０６と、通信部２０７と、バス２０８とを有する。
【００２２】
ＣＰＵ２０１は、ＲＯＭ２０２やＲＡＭ２０３に格納されているコンピュータプログラムやデータを用いて通信装置１０１の全体を制御する。ＲＯＭ２０２は、変更を必要としないプログラムやパラメータを格納する。ＲＡＭ２０３は、補助記憶装置２０４から供給されるプログラムやデータ、及び通信部２０７を介して外部から供給されるデータなどを一時記憶する。補助記憶装置２０４は、例えばハードディスクドライブ等で構成され、静止画や動画などのコンテンツデータを記憶する。
【００２３】
表示部２０５は、例えば液晶ディスプレイ等で構成され、ユーザが通信装置１０１を操作するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）などを表示する。操作部２０６は、例えばキーボードやマウス等で構成され、ユーザによる操作を受けて各種の指示をＣＰＵ２０１に入力する。通信部２０７は、中継装置１０２や通知装置１０３などの外部の装置と通信を行う。例えば、通信装置１０１が外部の装置と有線で接続される場合には、ＬＡＮケーブル等が通信部２０７に接続される。なお、通信装置１０１が外部の装置と無線通信する機能を有する場合、通信部２０７はアンテナを備える。バス２０８は、通信装置１０１の各部を繋いで情報を伝達する。
【００２４】
なお、本実施形態では、ＣＰＵ２０１がプログラムを実行することで、通信装置１０１と外部の装置との、通信部２０７を介した通信が制御されるが、通信装置１０１と外部の装置との通信の少なくとも一部を通信部２０７がハードウェア処理により制御してもよい。また、本実施形態では表示部２０５と操作部２０６は通信装置１０１の内部に存在するが、表示部２０５及び操作部２０６の少なくとも一方が通信装置１０１の外部に別の装置として存在していてもよい。この場合、ＣＰＵ２０１が、表示部２０５を制御する表示制御部、及び操作部２０６を制御する操作制御部として動作する。
【００２５】
本実施形態では、ＣＰＵ、ＲＡＭ、ＲＯＭが１つである例を示したが、これに限らず、複数のＣＰＵ、ＲＡＭ、ＲＯＭに分散してもよいし、一部の処理をオフロードするための専用ハードウェアを用いてもよい。
【００２６】
図３は、通信装置１０１のモジュール構成を示すブロック図である。通信装置１０１のＣＰＵ２０１が図３で示すモジュールの実行を行い、ＲＯＭ２０２やＲＡＭ２０３や補助記憶装置２０４がデータの読み出しや処理した結果のデータの保存を行う。
【００２７】
ソフトウェアインターフェース１０００は、各モジュールを接続している。ＴＣＰ／ＩＰ処理部１００１は、ネットワークに接続して、ＴＣＰ／ＩＰのプロトコルスタックの処理を行う。本実施形態ではＴＣＰ／ＩＰを用いたが、これに限らず、Ｂｌｕｅｔｏｏｔｈなど別の方式のプロトコルスタックを用いてもよい。
【００２８】
ＨＴＴＰ処理部１００２は、ＨＴＴＰ／１．１およびＨＴＴＰ／２の処理を実行する。選択部１００３は、複数の中継装置１０２から１つ以上の中継装置を選択する。ユーザ又はアプリケーションを介して、操作部２０６の操作をもとに選択しても良い。
【００２９】
登録部１００４は、中継装置１０２にサブスクライブを行う。具体的には、プッシュサービスに対するＨＴＴＰ  ＰＯＳＴメッセージを送信する。更新部１００５は、中継装置１０２にサブスクライブの更新要求（サブスクリプション情報のタイムアウト時刻の延長要求を含む）を行う。具体的には、プッシュサービスに対するＨＴＴＰ  ＰＵＴメッセージを送信する。
【００３０】
時間管理部１００６は、中継装置１０２からサブスクリプション情報のタイムアウト時刻を取得する。本実施形態では、サブスクライブに関するタイムアウト情報として、タイムアウト時刻を取得しているが、これに限らず、タイムアウトまでの残り時間などを取得してもよい。すなわち、タイムアウト情報は、サブスクリプション情報の有効期間を特定可能な情報であればよい。情報取得部１００７は、中継装置１０２が生成した、サブスクライブに応じたサブスクリプション情報を取得する。すなわち、時間管理部１００６及び情報取得部１００７は、中継装置１０２とサブスクリプション情報とサブスクリプション情報のタイムアウト情報とを共有する共有手段として機能する。
【００３１】
情報送信部１００８は、通知装置１０３にサブスクリプション情報の一部（例えば、プッシュＵＲＩ）を送信する。この際、ネットワークを利用して送信してもよいし、ＵＳＢやＮＦＣなど他の通信方式またはＱＲコードを利用して送信してもよい。
【００３２】
保存部１００９は、サブスクライブ登録を行っている中継装置のリスト、サブスクリプション情報、タイムアウト時刻を保存する。受信部１０１０は、通知装置１０３のプッシュ通知を中継装置１０２から受信する。
【００３３】
図４は、中継装置１０２のモジュール構成を示すブロック図である。中継装置１０２のＣＰＵ２０１が図４で示すモジュールの実行を行い、ＲＯＭ２０２やＲＡＭ２０３や補助記憶装置２０４がデータの読み出しや処理した結果のデータの保存を行う。
【００３４】
ソフトウェアインターフェース１１００は、各モジュールを接続している。ＴＣＰ／ＩＰ処理部１１０１は、ネットワークに接続して、ＴＣＰ／ＩＰのプロトコルスタックの処理を行う。本実施形態ではＴＣＰ／ＩＰを用いたが、これに限らず、Ｂｌｕｅｔｏｏｔｈなど別の方式のプロトコルスタックを用いてもよい。
【００３５】
ＨＴＴＰ処理部１１０２は、ＨＴＴＰ／１．１およびＨＴＴＰ／２の処理を実行する。登録部１１０３は、通信装置１０１からのサブスクライブを受け付ける。更新部１１０４は、通信装置１０１からのサブスクライブの更新要求を受け付ける。
【００３６】
時間管理部１１０５は、サブスクリプション情報のタイムアウト情報を管理する。時間管理部１１０５は、更新部１１０４のサブスクライブの更新の受け付けに応じて、タイムアウト情報を更新する。本実施形態では、ＨＴＴＰヘッダにタイムアウト情報を付与して、通信装置１０１または通知装置１０３に送ることで、タイムアウト情報をシステム内の装置間で共有する。また、本実施形態では、時間管理部１１０５は、タイムアウト情報としてタイムアウト時刻を決定するが、これに限らず、タイムアウトまでのカウントや、有効期間を決定してもよい。
【００３７】
情報生成部１１０６は、通信装置１０１からのサブスクライブに応じたサブスクリプション情報を生成し、通信装置１０１に送信することでサブスクリプション情報を共有する。
【００３８】
保存部１１０７は、サブスクリプション情報、タイムアウト時刻、通信装置１０１に関する情報、通知装置１０３に関する情報、プッシュ通知する内容等を保存する。受信部１１０８は、通知装置１０３からプッシュ通知を受信する。送信部１１０９は、通信装置１０１にプッシュ通知を送信する。完了送信部１１１０は、通知装置１０３に対し、通信装置１０１にプッシュ通知を送信したことを知らせる完了メッセージを送信する。
【００３９】
図５は、通知装置１０３のモジュール構成を示すブロック図である。通知装置１０３のＣＰＵ２０１が図５で示すモジュールの実行を行い、ＲＯＭ２０２やＲＡＭ２０３や補助記憶装置２０４がデータの読み出しや処理した結果のデータの保存を行う。
【００４０】
ソフトウェアインターフェース１２００は、各モジュールを接続している。ＴＣＰ／ＩＰ処理部１２０１は、ネットワークに接続して、ＴＣＰ／ＩＰのプロトコルスタックの処理を行う。本実施形態ではＴＣＰ／ＩＰを用いたが、これに限らず、Ｂｌｕｅｔｏｏｔｈなど別の方式のプロトコルスタックを用いてもよい。ＨＴＴＰ処理部１２０２は、ＨＴＴＰ／１．１およびＨＴＴＰ／２の処理を実行する。
【００４１】
情報受信部１２０３は、通信装置１０１からのサブスクリプション情報および中継装置の識別子やＩＰアドレスを受け付ける。送信部１２０４は、通信装置１０１に対し中継装置１０２を介してプッシュ通知を送信する。時間管理部１２０５は、サブスクリプション情報のタイムアウト時刻を取得する。通信装置１０１からサブスクリプション情報と一緒にタイムアウト情報を取得しても良いし、中継装置１０２から取得しても良い。また、時間管理部１２０５は、プッシュ通知を送信する時刻がタイムアウト時刻よりも前の所定時間以内である場合に、中継装置１０２に対してサブスクリプション情報の有効期間を更新するための更新処理を要求するようにしてもよい。すなわち、情報受信部１２０３及び時間管理部１２０５は、サブスクリプション情報とタイムアウト時刻とを中継装置や通信装置と共有する共有手段として機能する。
【００４２】
保存部１２０６は、サブスクリプション情報、タイムアウト時刻、通信装置１０１の情報を保存する。完了受信部１２０７は、中継装置１０２から完了メッセージを受信する。上述したように、完了メッセージは、送信部１２０４がプッシュ通知を中継装置１０２に送信した後、中継装置１０２が通信装置１０１に対しプッシュ通知を送信したことを知らせる旨のメッセージである。
【００４３】
再設定要求部１２０８は、通信装置１０１および中継装置１０２に対し、パラメータエラーであったサブスクライブについての再設定を要求する。
【００４４】
図６は、中継装置１０２の保持するサブスクリプション情報を示す図である。ここで図示される情報は、中継装置１０２の保存部１１０７によって、データベースなどを用いて管理される。
【００４５】
保存部１１０７は、中継装置１０２の通信相手として、通信装置１０１（番号１）、通信装置１０４（番号２）、通信装置１０５（番号３）の３つのエントリを保持している。通信装置１０４と通信装置１０５は、通信装置１０１と同じ機能を持ち、中継装置１０２と通信を行い、プッシュ通知を受信する。
【００４６】
それぞれの通信装置について、サブスクリプション名、サブスクライブの有無、サブスクリプション情報の最終利用時刻、タイムアウト時刻が示されている。そして、現在利用可能か否かをステータスによって判断できる。サブスクリプション名には、プッシュＵＲＩ、プッシュメッセージサブスクリプションＵＲＩ、プッシュメッセージサブスクリプションセットＵＲＩが含まれる。なお、図６の例では、説明を簡単にするため全てのサブスクリプション名は記載していない。
【００４７】
図７は、本実施形態に係る各装置の処理を示すシーケンス図である。図７を参照して、本実施の形態に係るプッシュ通知を行う各装置の処理について説明する。
【００４８】
通信装置１０１は、複数ある中継装置から１つを選択し、中継装置１０２にサブスクライブを送信する（Ｍ８０１）。本実施形態では中継装置は１つであったが、これに限らず、サブスクライブを複数送信することで複数の中継装置にも対応することができる。
【００４９】
中継装置１０２は、サブスクライブを受信すると、対応するサブスクリプション情報（プッシュＵＲＩ、プッシュサブスクリプションセットＵＲＩ、プッシュサブスクリプションＵＲＩ）を生成する。そして、サブスクリプション情報と、そのタイムアウト時刻を通信装置１０１に送信する（Ｍ８０２）。本実施形態では、サブスクリプション情報を中継装置１０２が全て生成していたが、これに限らず、サブスクリプション情報の一部または全部を通信装置１０１が生成してもよい。
【００５０】
通信装置１０１は、通知装置１０３に中継装置１０２のアドレスおよびサブスクリプション情報の一部（プッシュＵＲＩ）、サブスクリプション情報のタイムアウト時刻を送信する（Ｍ８０３）。この例では、通信装置１０１は通知装置１０３と直接送信しているが、これに限らず、中継装置１０２や他の装置（不図示）を介して通信してもよいし、ＵＳＢメモリやＱＲコードを介した通信を行ってもよい。
【００５１】
通信装置１０１は、中継装置１０２のアドレスとサブスクリプション情報を用いて、中継装置１０２に接続する（Ｍ８０４）。通信装置１０１は、ＨＴＴＰ／２を用いて接続し、通知装置１０３からのプッシュ通知が中継装置１０２を介して送られてくるのを待受ける。
【００５２】
通知装置１０３は、通信装置１０１から受信した中継装置１０２のアドレスとサブスクリプション情報の一部を用いて、中継装置１０２に接続する（Ｍ８０５）。通知装置１０３は、ＨＴＴＰ／２を用いて接続し、プッシュ通知が通信装置１０１に送られたかどうかを示す情報を受け取るための接続を行う。
【００５３】
通知装置１０３は、中継装置１０２に通信装置１０１向けのプッシュ通知を送信する（Ｍ８０６）。中継装置１０２は、サブスクリプション情報に基づいて、受信したデータが通信装置１０１向けのプッシュ通知であると判断し、中継装置１０２は通信装置１０１に対しプッシュ通知を送信する（Ｍ８０７）。このようにして、通信装置１０１は中継装置１０２を介して通知装置１０３からプッシュ通知を受信することができる。中継装置１０２は、通信装置１０１にプッシュ通知を送信した旨を示す情報を通知装置１０３に送信する（Ｍ８０８）。
【００５４】
通信装置１０１は、プッシュ通知を受信した時刻が、タイムアウト時刻より前の所定時間以内であれば、すなわちサブスクリプション情報の有効期間の終了までの時間が所定時間未満であれば、中継装置１０２にサブスクリプション情報の更新を要求する（Ｍ８０９）。また、通信装置１０１は、何らかの理由でサブスクリプション情報を送信出来なかった（エラー）場合、その時刻がタイムアウト時刻以前であればリトライを行う。タイムアウト時刻が経過していたときは、再度サブスクライブを行う。
【００５５】
通知装置１０３は、プッシュ通知を送信する時刻が、タイムアウト時刻より前の所定時間以内であれば、中継装置１０２にサブスクリプション情報の更新を要求する（Ｍ８１０）。また、通知装置１０３は、何らかの理由でサブスクリプション情報を送信出来なかった（エラー）場合、その時刻がタイムアウト時刻以前であればリトライを行う。タイムアウト時刻が経過していたときは、通信装置１０１にサブスクライブの再実行の要求を行う（不図示）。通信装置１０１が、サブスクリプション情報を削除すると決定した場合、中継装置１０２にサブスクリプション情報の削除要求を送信する（Ｍ８１１）。
【００５６】
なお、本実施形態では、通信装置１０１と通知装置１０３がどちらもサブスクリプション情報の更新要求を行ったが、これに限らず、どちらか片方だけであってもよい。また、この例では、サブスクリプション情報の更新を、サブスクリプション情報がタイムアウトする時刻より前の一定時間以内で行っているが、どのようなタイミングで更新処理を行うかは、システム内の装置間で予め決定されていてもよい。また、更新処理のタイミングは、システム内の装置に対するユーザの操作に基づいて指定されてもよい。また、図７の例では簡単化のために、データの送受信を１つの線で記載しているが、複数のパケットやフレームに分割して送信することもできる。
【００５７】
図８は、通信装置１０１におけるプッシュ通知の待受け開始時の処理を示すフローチャートである。図８に示す処理は、ユーザ又はアプリケーションがプッシュ通知の待受けを開始するタイミングで開始される。ただし、図８に示す処理の開始タイミングは上記タイミングに限定されない。また、図８に示す処理は、ＣＰＵ２０１がＲＯＭ２０２に格納されたプログラムをＲＡＭ２０３に展開して実行し、通信装置１０１の各モジュール（図３参照）を機能させることで実現される。なお、図８に示す処理の少なくとも一部を、ＣＰＵ２０１とは異なる専用のハードウェアにより実現してもよい。
【００５８】
ステップＳ３０１において、選択部１００３は、ユーザまたはアプリケーションの指示によってプッシュ通知の中継を行うための中継装置を決定する。通信装置１０１は、複数の中継装置１０２のＵＲＬやＩＰアドレスやポート番号などアドレスを解決するための識別子をＲＯＭ２０２、ＲＡＭ２０３、補助記憶装置２０４に保持しており、そのうち一つを選択する。本実施形態では、アドレスを内部に保持していたが、これに限らず、外部の例えばＤＤＮＳ（Ｄｙｎａｍｉｃ  Ｕｐｄａｔｅｓ  ｉｎ  ｔｈｅ  Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）を用いて取得してもよい。説明を簡略化するために、１つの中継装置１０２に接続しているが、これに限らず、複数の中継装置１０２のアドレスを選択し接続してもよい。
【００５９】
ステップＳ３０２において、ＨＴＴＰ処理部１００２は、ＴＣＰ／ＩＰ処理部１００１を介してＨＴＴＰ／２を用いて中継装置１０２に接続する。
【００６０】
ステップＳ３０３において、登録部１００４はプッシュ通知の受付を登録するためのサブスクライブを中継装置１０２に送信する
ステップＳ３０４において、情報取得部１００７は、中継装置１０２からサブスクリプション情報を取得する。前述したように、ＷｅｂＰｕｓｈにおけるサブスクリプション情報には、プッシュ通知を識別するためのプッシュＵＲＩ、プッシュ通知の受信のためのプッシュメッセージサブスクリプションＵＲＩ、プッシュメッセージサブスクリプションＵＲＩをまとめて管理するためのプッシュメッセージサブスクリプションセットＵＲＩが含まれている。なお、本実施形態では、サブスクリプション情報は中継装置１０２から取得しているが、これに限らず、通信装置１０１または通知装置１０３が一部のサブスクリプション情報を生成しても実現できる。また、サブスクリプション情報の識別子などが重なった場合、サブスクリプション情報の再生成処理を行う。
【００６１】
また、ステップＳ３０４で時間管理部１００６は、中継装置１０２からサブスクリプション情報のタイムアウト時刻を取得する。本実施形態では、中継装置１０２からタイムアウト時刻を取得していたが、通信装置１０１または通知装置１０３がタイムアウト時刻を指定してもよい。
【００６２】
ステップＳ３０５において、情報送信部１００８は、サブスクリプション情報の一部であるプッシュ通知情報（プッシュＵＲＩ）、中継装置の識別子（例えば、ＦＱＤＮ）やアドレス、タイムアウト時刻を通知装置１０３に送信する。
【００６３】
ステップＳ３０６において、受信部１０１０は、サブスクリプション情報に含まれるプッシュメッセージサブスクリプションＵＲＩまたはプッシュメッセージサブスクリプションセットＵＲＩ、中継装置１０２のアドレスを用いて中継装置１０２に接続する。
【００６４】
ステップＳ３０７において、受信部１０１０は、ステップＳ３０６での接続に応じて中継装置１０２から返答されたステータスコードを受信する。受信部１０１０が中継装置１０２のステータスコードからサブスクリプション情報が既に失効していると判断する（ステップＳ３０７において、「失効」）と、サブスクリプション情報を再取得するために処理はステップＳ３０４に戻る。受信部１０１０が中継装置１０２に接続できない（例えば、アドレスが変わっている、ＵＲＩが不正であるなど）とエラーとして判断（ステップＳ３０７において、「エラー」）し、再度サブスクライブするために処理はステップＳ３０１に戻る。
【００６５】
受信部１０１０が中継装置１０２からプッシュＵＲＩを含むプッシュ通知の予約を受信すると成功と判断（ステップＳ３０７において、「ＯＫ」）し、ステップＳ３０８において、プッシュ通知の待受けを開始（図９において詳述）して処理を終了する。
【００６６】
図９は、通信装置１０１のプッシュ通知受信時の処理を示すフローチャートである。ステップＳ３２１において、受信部１０１０は、プッシュ通知を受信する。ステップＳ３２２において、登録部１００４は、サブスクライブ（サブスクリプション情報）の更新を行うか否かの判断を行う。
【００６７】
登録部１００４は、サブスクライブの更新を行わないと判断した場合（ステップＳ３２２においてＮｏ）、処理は終了する。例えば、受信時刻がタイムアウト時刻より前であって、タイムアウト時刻まで一定時間以上ある場合などは、サブスクライブの更新処理をスキップすることで、システム全体の処理を軽減できる。登録部１００４は、サブスクライブの更新を行うと判断した場合（ステップＳ３２２においてＹｅｓ）、処理はステップＳ３２３に進む。例えば、タイムアウト時刻とプッシュ通知を受信した時刻とを比較し、タイムアウト時刻以降であればサブスクライブの更新処理を行う。また、受信時刻がタイムアウト時刻より前であって、タイムアウト時刻と受信時刻との差が一定時間以内の場合に更新処理を行うようにしてもよい。
【００６８】
ステップＳ３２３において、更新部１００５は、中継装置１０２に対しサブスクライブの更新を要求する。具体的には、プッシュサービスに対するＨＴＴＰ  ＰＵＴメッセージを送信する。サブスクライブの更新は、プッシュメッセージサブスクリプションＵＲＩおよびプッシュメッセージサブスクリプションセットＵＲＩのどちらに対しても更新を行うことができる。本実施形態は、ＨＴＴＰ  ＰＵＴメッセージによる更新を行ったがこれに限らず、他のＨＴＴＰリクエストを用いても良い。また他のプロトコルによる実施形態の場合、プロトコルに準拠した更新メッセージを利用してもよい。
【００６９】
ステップＳ３２４において、更新部１００５は、更新要求に対して、中継装置１０２からの返答でエラーを受信したか否かを判断する。エラーを受信していないと判断（ステップＳ３２４においてＮｏ）すると、ステップＳ３２５において、時間管理部１００６は中継装置１０２からタイムアウト時刻を取得し、処理は終了する。一方、更新部１００５は、中継装置１０２からエラーを受信したと判断（ステップＳ３２４においてＹｅｓ）すると、ステップＳ３２６において更新部１００５はエラーの内容について判断する。タイムアウトによりサブスクリプション情報が失効している旨のエラーの場合（ステップＳ３２６において「失効」）、登録部１００４は、サブスクリプション情報の削除（サブスクライブの解除）を行う。プッシュメッセージＵＲＩにＨＴＴＰ  ＤＥＬＥＴＥを送信することでサブスクライブの解除を実現する。
【００７０】
一方、サブスクリプション情報が検索できない等のパラメータエラーである場合（ステップＳ３２６において「パラメータエラー」）、ステップＳ３２８において、通信装置１０１は、待ち受け開始処理（図８に示す処理フロー）を再度開始し、処理は終了する。
【００７１】
なお、サブスクライブの解除処理（アンサブスクライブ）の実行は、タイムアウトしているか否かで判断する方法に限らず、通信装置１０１において所定のユーザ操作が行われたことに応じて実行してもよい。
【００７２】
図１０は、中継装置１０２のサブスクライブ処理のフローチャートである。
【００７３】
ステップＳ４０１で、ＨＴＴＰ処理部１１０２はＴＣＰ／ＩＰ処理部１１０１を介して、通信装置１０１からのＨＴＴＰ／２の接続を開始する。
【００７４】
ステップＳ４０２で、登録部１１０３は通信装置１０１からのサブスクライブを受け付ける。
【００７５】
ステップＳ４０３で、登録部１１０３は受け付けたサブスクライブの種類を判断する。ここで、登録部１１０３が通信装置１０１からＨＴＴＰ  ＰＯＳＴを受け付けた場合、サブスクライブの種類は「登録」であると判断し（ステップＳ４０３において「登録」）と、処理はステップＳ４０４に進む。
【００７６】
登録部１１０３は、通信装置１０１からＨＴＴＰ  ＰＵＴを受け付けた場合、サブスクライブの種類は「更新」であると判断し（ステップＳ４０３において「更新」）、処理はステップＳ４０７に進む。
【００７７】
登録部１１０３は、通信装置１０１からＨＴＴＰ  ＤＥＬＥＴＥを受け付けた場合、サブスクライブの種類は「削除」であると判断し（ステップＳ４０３において「削除」）と、処理はステップＳ４１１に進む。
【００７８】
ステップＳ４０４では、情報生成部１１０６は、通信装置１０１のサブスクライブに応じてサブスクリプション情報を生成する。このサブスクリプション情報は、サブスクライブの要求毎に生成しても良いし、通信装置１０１毎に生成しても良いし、ＨＴＴＰクライアント認証等を用いて通信装置１０１に対応するＨＴＴＰクライアント毎に生成しても良い。
【００７９】
ステップＳ４０５では、送信部１１０９は、通信装置１０１にサブスクリプション情報の送信を行う。ステップＳ４０６では、受信部１１０８は、通知装置１０３から送信されるプッシュ通知の待受けを開始する（図１１において詳述。）
サブスクライブの種類が「更新」であった場合（ステップＳ４０３において「更新」）、ステップＳ４０７で、更新部１１０４は、サブスクライブの更新要求に対応するサブスクリプション情報が保存部１１０７内に保存されているかの確認を行う。対応する情報があると判断する（ステップＳ４０７において、Ｙｅｓ）と、処理はステップＳ４０８に進む。対応する情報がないと判断する（ステップＳ４０７において、Ｎｏ）と、処理はステップＳ４１０に進む。
【００８０】
ステップＳ４０８では、時間管理部１１０５および保存部１１０７は、サブスクライブの更新要求に対応するサブスクリプション情報のタイムアウト時刻を更新する。例えば、タイムアウトする時刻を所定時間延長させる。ここで、タイムアウト時刻だけでなく、サブスクリプション情報の一部の情報（例えば、ＵＲＩ）を更新してもよい。これにより、サブスクリプション情報に含まれるＵＲＩを更新することができ、ＵＲＩを変更したい時の再取得処理を低減することができる。
【００８１】
ステップＳ４０９では、更新部１１０４は通信装置１０１にサブスクリプション情報のタイムアウト時刻を送信する。更新部１１０４は、サブスクリプション情報の一部も更新していれば、その情報も通信装置１０１に送信してもよい。
【００８２】
一方、更新部１１０４が、サブスクライブの更新要求に対応する情報がないと判断した場合（ステップＳ４０７において、Ｎｏ）、ステップＳ４１０において、更新部１１０４は、通信装置１０１にサブスクライブの更新のエラー情報を送信する。このエラー情報には、サブスクライブの更新に利用したＵＲＩについてのエラー、更新不可を示すエラー、既にサブスクライブがタイムアウトしている旨のエラー（失効）などが分類できるステータスコードを含む。
【００８３】
サブスクライブの種類が「削除」であった場合（ステップＳ４０３において「削除」）、ステップＳ４１１で、更新部１１０４は、サブスクリプション情報を削除（利用不可に）する。そして、削除完了のメッセージを通信装置１０１に送信し、処理を終了する。
【００８４】
図１１は、中継装置１０２のプッシュ通知待受け開始処理を示すフローチャートである。
【００８５】
ステップＳ５０１では、受信部１１０８は、通信装置１０１からプッシュ通知の待受け開始メッセージを受信する。待受け開始メッセージは、プッシュメッセージサブスクリプションＵＲＩに対するＨＴＴＰ  ＧＥＴにより実現する。ここで受信部１１０８は、通信装置１０１からサブスクリプション情報の一部（例えば、プッシュメッセージサブスクリプションＵＲＩ）を受信する。
【００８６】
ステップＳ５０２では、時間管理部１１０５および保存部１１０７は、ステップＳ５０１で受信したサブスクリプション情報の一部からサブスクリプション情報を検索し、サブスクリプション情報に関連付けられたタイムアウト時刻を取得する。
【００８７】
ステップＳ５０３では、時間管理部１１０５および保存部１１０７はサブスクリプション情報が検索できたか、タイムアウトしているかにより、サブスクリプション情報が利用可能か否かの判断を行う。時間管理部１１０５および保存部１１０７は、サブスクリプション情報が検索でき、かつ、タイムアウトしていない場合、利用可能であると判断し（ステップＳ５０３において、「利用可能」）、処理はステップＳ５０４に進む。時間管理部１１０５および保存部１１０７は、サブスクリプション情報が検索できない、または、タイムアウトしている場合、エラーとして判断し（ステップＳ５０３において、「エラー」）、処理はステップＳ５０６に進む。
【００８８】
ステップＳ５０４では、受信部１１０８は、通知装置１０３からのプッシュ通知の待受けを開始する。
【００８９】
ステップＳ５０５では、送信部１１０９は通信装置１０１に送信すべきプッシュ通知が保存されているか保存部１１０７に確認し、保存されていれば通信装置１０１に送信する。本実施形態では、送信部１１０９は待受けを開始する要求に含まれるサブスクリプション情報と関連づけられたプッシュＵＲＩに対応するプッシュ通知があるか否かを確認する。このプッシュ通知は、通知装置１０３が送信するものであってもよいし、中継装置１０２が送信するものであってもよい。例えば、利用規約のような接続時に必ず表示させたいメッセージのプッシュ通知などに用いることができる。
【００９０】
一方、時間管理部１１０５および保存部１１０７がエラーと判断した場合（ステップＳ５０３において、「エラー」）、ステップＳ５０６において、保存部１１０７は、エラーの内容について判断する。
【００９１】
保存部１１０７は、サブスクリプション情報が検索できないパラメータのエラーであると判断する（ステップＳ５０６において、「パラメータエラー」）と、ステップＳ５０７において、送信部１１０９はパラメータのエラーを示すステータスコードを含むＨＴＴＰレスポンスを通信装置１０１に送信する。一方、時間管理部１１０５がタイムアウトのエラーであると判断する（ステップＳ５０６において「失効」）と、ステップＳ５０８において、送信部１１０９はタイムアウトのエラーを示すステータスコードを含むＨＴＴＰレスポンスを通信装置１０１に送信し、処理は終了する。
【００９２】
図１２は、中継装置１０２のプッシュ通知送受信処理を示すフローチャートである。
【００９３】
ステップＳ６０１では、受信部１１０８は、通知装置１０３からプッシュ通知を受信する。このプッシュ通知はプッシュＵＲＩに対するＨＴＴＰ  ＰＯＳＴで実現される。
【００９４】
ステップＳ６０２では、保存部１１０７は、受信したプッシュ通知に含まれるプッシュＵＲＩからサブスクリプション情報を検索する。保存部１１０７は、サブスクリプション情報が検索でき、かつ、タイムアウトしていない場合、そのサブスクリプション情報が利用可能であると判断し（ステップＳ６０２において、「利用可能」）、処理はＳ６０３に進む。保存部１１０７はサブスクリプション情報が検索できない、または、タイムアウトしている場合、エラーとして判断し（ステップＳ６０２において、「エラー」）と、処理はステップＳ６０６に進む。なお、ステップＳ６０６〜Ｓ６０８は、上述のステップＳ５０６〜Ｓ５０８と同様の処理であるから、説明は省略する。
【００９５】
ステップＳ６０３では、登録部１１０３はサブスクリプション情報に関連するプッシュ通知の待受け開始がされているかの判断を行う。登録部１１０３がプッシュ通知の待受けを行っていないと判断する（ステップＳ６０３において、Ｎｏ）と、ステップＳ６０４において、保存部１１０７はプッシュ通知の保存を行う。一方、登録部１１０３がプッシュ通知の待受けを行っていると判断する（ステップＳ６０３において、Ｙｅｓ）と、ステップＳ６０５において、送信部１１０９は対応する通信装置１０１にプッシュ通知を送信する。
【００９６】
次いで、ステップＳ６０９では、完了送信部１１１０は、プッシュ通知が通信装置１０１に送信されたことを示す完了通知を通知装置１０３に送信し、処理は終了する。
【００９７】
次に、図１３において通知装置１０３のプッシュ通知送信処理について説明するが、プッシュ通知の送信に先立って、通知装置１０３で行われる処理について述べる。通知装置１０３の情報受信部１２０３は通信装置１０１からサブスクリプション情報およびサブスクリプション情報のタイムアウト時刻を受信する。保存部１２０６は受信した情報を保存する。送信部１２０４はプッシュ通知が中継装置１０２によって通信装置１０１に送信されたことを示す完了通知を受け取るために、レシートサブスクリプションＵＲＩに対してＨＴＴＰ  ＧＥＴを送信する。通知装置１０３は、中継装置１０２からプッシュメッセージＵＲＩを含むＰＵＳＨ＿ＰＲＯＭＩＳＥを受信する。その後、通知装置１０３はプッシュ通知の完了を受信することができる。
【００９８】
図１３は、通知装置１０３のプッシュ通知送信処理を示すフローチャートである。ステップＳ７００では、ＨＴＴＰ処理部１２０２はＴＣＰ／ＩＰ処理部１２０１を介して、通知装置１０３のＨＴＴＰ／２の接続を開始する。
【００９９】
ステップＳ７０１では、送信部１２０４は、プッシュ通知に係るサブスクリプション情報がタイムアウトしているか否かを判断する。例えば、現在時刻がタイムアウト時刻以降であるときは、タイムアウトしていると判断し（ステップＳ７０１においてＹｅｓ）、処理はステップＳ７０８に進む。なお、タイムアウトしているか否かの判断は、プッシュ通知送信時に限らず、常時監視する構成にしてもよい。
【０１００】
タイムアウトしていないと判断した場合（ステップＳ７０１においてＮｏ）、ステップＳ７０２では、送信部１２０４は中継装置１０２にプッシュ通知を送信する。プッシュ通知の送信は、プッシュＵＲＩに対して、ＨＴＴＰ  ＰＯＳＴを送信することで実現する。
【０１０１】
ステップＳ７０３では、送信部１２０４はプッシュ通知の送信のＨＴＴＰリクエストに対する中継装置１０２からのＨＴＴＰレスポンスのステータスコードを確認する。送信部１２０４は、プッシュ通知が送信できたと判断する（ステップＳ７０３において「ＯＫ」）と、ステップＳ７０４において時間管理部１２０５は中継装置１０２から、サブスクリプション情報のタイムアウト時刻を取得する。なお、時間管理部１２０５は、タイムアウト時刻の取得に代えて、又はタイムアウト時刻の取得と併せて、サブスクリプション情報の更新を要求してもよい。一方、送信部１２０４は、プッシュ通知が送信できなかったと判断する（ステップＳ７０３において「ＮＧ」）と、ステップＳ７０５においてエラー内容を確認する。
【０１０２】
送信部１２０４はサブスクリプション情報がタイムアウトしていることを示すステータスコードを受信したと判断すると（ステップＳ７０５において「失効」）と、ステップＳ７０６においてプッシュ通知の送信を中止する。次いで、ステップＳ７０７において、保存部１１０７は送信できなかったプッシュ通知に関連するサブスクリプション情報を削除し、処理を終了する。
【０１０３】
また、送信部１２０４はサブスクリプション情報のパラメータがエラーであると判断すると（ステップＳ７０５において「パラメータエラー」）、ステップＳ７０８において、再設定要求部１２０８は通信装置１０１および中継装置１０２にサブスクリプション情報の再設定（サブスクライブの再実行）の要求を送信する。送信部１２０４は再設定されたサブスクリプション情報を用いて、プッシュ通知を行う（ステップＳ７０２）。
【０１０４】
なお、ステップＳ７０３において、ステータスコードがＯＫの場合であっても、ユーザやアプリケーションの指示やセキュリティ観点からサブスクリプション情報の再設定を行ってもよい。本実施形態ではサブスクリプション情報の再設定のために、通信装置１０１および中継装置１０２に要求を送信したが、これに限らず、どちらか片方だけに送信してもよい。
【０１０５】
以上、本発明の一実施形態を示した。本実施形態における通信装置１０１、中継装置１０２、通知装置１０３は、ＨＴＴＰ／２において規定されるコネクション及びストリームを使用してフレームの送受信を行うことで通信する。しかしながら、通信装置はＨＴＴＰ／２方式の通信を行うものに限定されない。例えば、通信装置はＷｅｂＳｏｃｋｅｔやＱＵＩＣ（Ｑｕｉｃｋ  ＵＤＰ  Ｉｎｔｅｒｎｅｔ  Ｃｏｎｎｅｃｔｉｏｎｓ）などの他の通信規格に従って通信を行ってもよい。この場合に通信装置は、各規格に応じた形式のメッセージや論理的な接続を使用して通信を行う。
【０１０６】
また本実施形態ではＷｅｂＰｕｓｈに適用した例を説明したが、これに限らず、プッシュ通知を送受信するためのその他のシステムやプロトコルに適用することができる。
【０１０７】
本実施の形態では、通信装置および通知装置は、中継装置からサブスクリプション情報のタイムアウト時刻を取得し、サブスクリプション情報の更新要求を行うことができる。これにより、サブスクリプション情報のタイムアウト情報を共有して、プッシュ通知のための通信を適切な期間継続することができる。
【０１０８】
また、ＷｅｂＰｕｓｈのようなシステムでは、ＵＡとＡＳは直接通信できる状態でない場合がある。例えば、間接的な通信を行う場合や、ＵＡやＡＳがＮＡＴ下にあり、グローバルからのアクセスができないような場合には、ＵＡとＡＳとの間でサブスクリプション情報を動的に更新することができないことが考えられる。本実施形態では、中継装置が通信装置及び通知装置とサブスクリプション情報のタイムアウト情報の更新と共有のための通信を行うことで、通信装置と通知装置との間でもサブスクリプション情報を動的に更新することができる。
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ等）によっても実現可能である。また、そのプログラムをコンピュータにより読み取り可能な記録媒体に記録して提供してもよい。
【符号の説明】
【０１０９】
１０１  通信装置、１０２  中継装置、１０３  通知装置、１００１  ＴＣＰ／ＩＰ処理部、１００２  ＨＴＴＰ処理部、１００４  登録部、１００５  更新部、１００６  時間管理部、１００７  情報取得部、１００８  情報送信部、１００９  保存部、１０１０  受信部。
【図１】
2019101976.tif 000003
【図２】
2019101976.tif 000004
【図３】
2019101976.tif 000005
【図４】
2019101976.tif 000006
【図５】
2019101976.tif 000007
【図６】
2019101976.tif 000008
【図７】
2019101976.tif 000009
【図８】
2019101976.tif 000010
【図９】
2019101976.tif 000011
【図１０】
2019101976.tif 000012
【図１１】
2019101976.tif 000013
【図１２】
2019101976.tif 000014
【図１３】
2019101976.tif 000015