(57)【要約】コンピューティングデバイス上のアプリケーションが、該アプリケーションに関連付けられた通知を、通知システムに提供する。通知は、該通知について提示されるべきコンテンツの識別情報と、コンテンツをいつ提示すべきかの指示とうぃ含む。通知システムは、アプリケーションが実行中であるかどうかに関わらず、アプリケーションが実行中でない場合にはアプリケーションの実行を再開させることなく、通知コンテンツを適切な時間に提示する。様々な電力効率化技術も使用して、どの通知を提示するか、（例えばコンピューティングデバイスの電力モードに起因して）観測可能でない通知を反映するようにユーザインタフェースを更新するのを回避するために、これらの通知を反映するようにユーザインタフェースをいつ更新するかを決定する。
2015515039.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて実施される方法であって、
前記コンピューティングデバイスにおいて、アプリケーションに関連付けられた通知のためのメタデータと前記通知のためのコンテンツの双方を受信するステップと、
前記コンピューティングデバイスにおいて、前記メタデータ内に含まれる前記コンテンツを提示すべき時の指示に少なくとも部分的に基づく時間に、前記アプリケーションを実行するか実行を再開することなく、前記通知のための前記コンテンツを提示するユーザインフェース（ＵＩ）を更新するステップと
を含む、方法。
【請求項２】
前記時間は更に、前記通知が前記コンピューティングデバイスにおいて観測可能かどうかに少なくとも部分的に基づく、請求項１に記載の方法。
【請求項３】
前記コンピューティングデバイスが１つ又は複数の低電力モードのいずれかにある場合、前記通知は前記コンピューティングデバイスにおいて観測可能でない、請求項２に記載の方法。
【請求項４】
前記コンピューティングデバイスはディスプレイデバイスを含み、該ディスプレイデバイスが電源オフされている場合、前記通知は前記コンピューティングデバイスにおいて観測可能でない、請求項２に記載の方法。
【請求項５】
前記アプリケーションは複数のアプリケーションの１つを備え、当該方法は、
前記複数のアプリケーションのそれぞれについて複数の通知を保持するステップと、
前記通知が前記コンピューティングデバイスにおいて観測可能である前記コンピューティングデバイスの設定への遷移に応答して、前記複数のアプリケーションの１つ又は複数の各々について、前記複数の通知のうち前記アプリケーションについて提示すべき少なくとも１つの通知を決定するステップと、
前記複数のアプリケーションの１つ又は複数の各々について、前記複数の通知のうち前記少なくとも１つの通知の前記コンテンツを提示するように前記ＵＩを更新するステップと
を更に含む、請求項２に記載の方法。
【請求項６】
前記コンピューティングデバイスはディスプレイデバイスを含み、前記通知は前記アプリケーションの表現を備え、前記時間は更に、前記通知が前記コンピューティングデバイスにおいて観測可能であることに少なくとも部分的に基づき、前記通知は、前記ディスプレイデバイス上にロック画面が表示されている場合、前記コンピューティングデバイスにおいて観測可能でなく、前記アプリケーションの表現は前記ロック画面上に表示されない、請求項１に記載の方法。
【請求項７】
前記通知のためのコンテンツを受信するステップは、
前記アプリケーションから、前記通知のための前記コンテンツを取得することができる場所の識別子を受信するステップと、
前記場所から、前記通知のための前記コンテンツを取得するステップであって、前記時間は更に、前記通知が前記コンピューティングデバイスにおいて観測可能であることに少なくとも部分的に基づき、前記通知は、前記場所にアクセスすることができるネットワークに前記コンピューティングデバイスが接続されていない場合、前記コンピューティングデバイスにおいて観測可能でない、請求項１に記載の方法。
【請求項８】
前記通知は、スケジュールされた通知を備え、該スケジュールされた通知のためのメタデータは、前記通知を提示すべき日時と、その後前記通知が提示されなくなる寿命とを示す、請求項１に記載の方法。
【請求項９】
前記通知は周期的通知を備え、該周期的通知のためのメタデータは、前記周期的通知のためのコンテンツを取得するために、識別された場所が通知システムによってアクセスされる頻度を示す、請求項１に記載の方法。
【請求項１０】
複数の命令を含むアプリケーションを格納した１つ又は複数のコンピュータ読取可能な記憶媒体であって、前記命令は、コンピューティングデバイスの１つ又は複数のプロセッサによって実行されると、該１つ又は複数のプロセッサに、
前記コンピューティングデバイスの通知システムに、アプリケーションに関連付けられた通知のためのコンテンツの識別情報を提供させて、前記通知のための前記コンテンツの提示の時間に前記アプリケーションの実行が終了しているか一時停止しているかに関わらず、前記通知システムによる前記コンテンツの提示を可能にし、
前記通知システムに、前記通知のための前記コンテンツをいつ提示すべきかを示す、前記通知のためのメタデータを提供させる
ように構成される、コンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電力効率の良いアプリケーション通信システムに関する。
【背景技術】
【０００２】
コンピュータがますます一般的になり、相互接続されるにつれて、ユーザに利用可能なアプリケーションの数も増加する。しかしながら、アプリケーションとの対話は、コンピュータ上にインストールされるアプリケーションの数により、ユーザにとって難しく、イライラするものとなる可能性がある。この対話は、興味のあるアプリケーションを探すことだけでなく、そのアプリケーションの機能にアクセスすることを含む可能性がある。例えばユーザは、天気情報を得るために天気アプリケーションを選択し、次いで最新のニュースをキャッチアップするためにニュースアプリケーションと対話し、そうして複数の他のアプリケーションとも対話することがある。したがって、所望の情報を探すためのこれらのアプリケーションを介するナビゲーションは、非常に時間がかかり、またコンピューティングデバイス上で利用可能なアプリケーションの数によって更に複雑なものとなり得る。
【発明の概要】
【０００３】
この「発明の概要」の記載は、以下の「発明を実施するための形態」において更に説明される概念の選択を簡単な形で紹介するのに提供される。この「発明の概要」の記載は、特許請求に係る主題の主要な特徴又は本質的特徴を特定するようには意図されておらず、また特許請求に係る主題の範囲を限定するのに用いられるようにも意図されていない。
【０００４】
１つ又は複数の態様によると、アプリケーションに関連付けられる通知のためのメタデータと、通知のためのコンテンツとの双方がデバイスにおいて受信される。アプリケーションを実行することなく、あるいは実行を再開することなく、ユーザインタフェース（ＵＩ）は、通知のためのコンテンツを提示するようにデバイスにおいて更新される。ＵＩが更新される時間は少なくとも部分的に、コンテンツを提示すべき時を示すメタデータ内に含まれる指示に基づく。
【０００５】
１つ又は複数の態様によると、アプリケーションに関連付けられる通知のためのコンテンツの識別情報が、コンピューティングデバイスの通知システムに提供される。通知は、コンテンツの提示の時間にアプリケーションの実行が終了するか一時停止されるかに関わらず、通知システムによって提示されることになる。通知のためのメタデータも通知システムに提示され、該メタデータは、通知のためのコンテンツがいつ提示されるべきかを示す。
【０００６】
図面を通して同じ参照番号が同様の特徴を指すのに使用される。
【図面の簡単な説明】
【０００７】
【図１】１つ又は複数の実施形態に係る電力効率の良いアプリケーション通知システムを実装する例示的システムを示す図である。
【図２】１つ又は複数の実施形態に係る例示の通知システムを示す図である。
【図３】１つ又は複数の実施形態に従ってアプリケーションの表現の一部として複数の通知を連続して表示する例示的実装のシステムを示す図である。
【図４】１つ又は複数の実施形態に従って電力効率の良いアプリケーション通知システムを実装するための例示的プロセスを示すフローチャートである。
【図５】１つ又は複数の実施形態に従って電力効率の良いアプリケーション通知システムを起動するための例示的プロセスを示すフローチャートである。
【図６】本明細書で説明される様々な技術を実装することができる１つ又は複数のコンピューティングシステム及び／又はデバイスを表す、例示のコンピューティングデバイスを含む例示的システムを示す図である。
【発明を実施するための形態】
【０００８】
本明細書において電力効率の良いアプリケーション通信システムを検討する。コンピューティングデバイスは、１つ又は複数のアプリケーションと通知システムを含み、アプリケーションは通知を通知システムに提供する。通知は、該通知によって提示されるべきコンテンツ（又はコンテンツを取得する場所の指示）を含む。通知は、コンテンツをいつ提示すべきかの指示と、オプションとして様々な追加のメタデータ（例えば通知の寿命すなわち終了期間、通知のタイプ等）も含む。通知システムは、アプリケーションが実行中かどうかに関わらず、アプリケーションが実行していない場合もアプリケーションの実行を再開することなく、適切な時間に通知コンテンツを提示する。また、様々な電力効率化技術を使用して、（例えばコンピューティングデバイスの電力モードに起因して）観測可能でない通知を反映するようＵＩを更新するのを回避するために、どの通知を提示するか、及びいつユーザインタフェース（ＵＩ）を更新してこれらの通知を反映するかも決定する。
【０００９】
図１は、１つ又は複数の実施形態に係る電力効率の良いアプリケーション通知システムを実装する例示的システムを図示している。システム１００は、コンピューティングデバイス１０２を含む。コンピューティングデバイス１０２は、物理的なデバイス又は仮想デバイスのような、様々な異なるタイプのデバイスのいずれかとすることができる。例えばコンピューティングデバイス１０２は、デスクトップコンピュータ、サーバコンピュータ、ラップトップ又はネットブックコンピュータ、タブレット又はノートパッドコンピュータ、モバイルステーション、娯楽用電化製品、ディスプレイデバイスに通信可能に結合されるセットトップボックス、テレビジョン又は他のディスプレイデバイス、セルラ又は他の無線デバイス、ゲームコンソール、自動車用コンピュータ等のような物理デバイスとすることができる。コンピューティングデバイス１０２は、物理デバイス上で動作する仮想マシンのような仮想デバイスとすることもできる。仮想マシンは、様々な異なるタイプの物理デバイスのうちのいずれか（例えば上記に列挙した様々なタイプのいずれか）において動作することができる。したがって、コンピューティングデバイス１０２は、十分なメモリとプロセッサリソースを有する十分なリソースデバイス（例えばパーソナルコンピュータ、ゲームコンソール）から、限定的なメモリ及び／又は処理リソースを有する低リソースデバイス（例えば伝統的なセットトップボックス、ハンドヘルドゲームコンソール）までに及ぶ可能性がある。
【００１０】
コンピューティンデバイス１０２は、オペレーティングシステム１０４を含む。オペレーティングシステム１０４は、コンピューティングデバイス１０２の基礎となる機能を、コンピューティングデバイス１０２上で実行可能な１つ又は複数のアプリケーション１０６へと抽象化するように構成される。例えばオペレーティングシステム１０４は、コンピューティングデバイス１０２の処理、メモリ、ネットワーク、ディスプレイ及び／又は他のプレゼンテーション機能を抽象化し、これにより、この基礎となる機能が「どのように」実装されるかを知らずにアプリケーションを記述することが可能である。各アプリケーション１０６は、例えばレンダリングがどのように実行されるかを理解することなく、ディスプレイデバイス１１０によってレンダリングされて表示されるべきデータを、オペレーティングシステム１０４に提供することがある。
【００１１】
オペレーティングシステム１０４は、例えばファイルシステム及びコンピューティングデバイス１０２のユーザによってナビゲート可能なユーザインタフェース（ＵＩ）を管理するなどの様々な他の機能も含み得る。この例は、コンピューティングデバイス１０２のディスプレイデバイス１１０上に表示されるアプリケーションランチャ（例えばデスクトップ）として図示されている。デスクトップは、アイコン、タイル、テキスト説明等のような複数のアプリケーション１０６の表現を含む。デスクトップは、階層ファイル構造のルートレベルとして考慮され得る。図示された例に示される表現は、コンピューティングデバイス１０２上での実行のために、アプリケーション１０６のうちの対応するアプリケーションを起動するのに選択可能である。このようにして、ユーザは、容易にファイル構造中をナビゲートして、興味のあるアプリケーションの実行を開始することができる。図１では６つの表現（カレンダアプリケーションの表現と、写真アプリケーションの表現と、天気アプリケーションの表現と、日常アプリケーションの表現と、旅行アプリケーションの表現と、地図アプリケーションの表現）のみが図示されているが、ユーザは、表現をスクロールして、異なるアプリケーションの表現をディスプレイデバイス１１０に表示させることができる。
【００１２】
オペレーティングシステム１０４は、通知システム１１２も含むように図示されている。通知システム１１２は、ディスプレイデバイス１１０上に表示されるＵＩの一部として表示すべき通知を管理する。通知システム１１２は、アプリケーション１０６の表現である通知のように、異なるタイプの通知をサポートすることができる。例えば天気アプリケーションの表現１１４は、名前と現在の天気の状態、例えば「シアトル  ７５°/曇り」を示す通知を含むように図示されている。同様に、カレンダアプリケーションの表現１１６は、次にスケジュールされた予定が１２：００の「ランチ」であることを示す通知を含むように図示されている。このようにして、ユーザは、アプリケーションの各々を起動してナビゲートする必要なく、アプリケーション１０６に関する情報を容易に見ることができる。特定のアプリケーションの表現が示されているが、例えばソーシャルネットワークサービスの友達等、ユーザが関与するサービスを参照するアプリケーションの表現のような、アプリケーションの他の表現も代替的に使用することができる。
【００１３】
通知システム１１２は、他のタイプの通知もサポートすることができる。そのようなタイプの通知の１つが、「トースト（toast）」とも呼ばれる、表示可能なポップアップ又は一時通知である。そのようなポップアップ又は一時通知は、アプリケーション１０６の表現に加えて（又はこれに代えて）表示することができる。そのようなポップアップ又は一時通知は、オプションとして、コンピューティングデバイス１０２上での実行のために、アプリケーション１０６のうちの対応するアプリケーションを起動するのに選択可能であり得る。例えばポップアップ通知１１８を一時的に表示して、間もなく始まる映画をユーザに通知することができる（例えば「ショーが５分以内に開始します」）。
【００１４】
１つ又は複数の実施形態において、通知システム１１２は、任意の特定の時間において、アプリケーションに関連付けられた閾値数の通知しか提示することを許可しない。この閾値数は例えば、１つの通知とすることができるが、代替的には他の閾値数も用いることができる。既に閾値数の通知が提示されているとき、通知システム１１２は、ある通知を新たな通知と置き換える。新たな通知は、提示されるべき通知であり、置換される通知は以前に提示された通知である。複数の通知を同時に提示することができる場合、置換される通知は、異なる方法で決定され得る（例えば少なくとも最近提示を開始した通知を、置換される通知とすることができる）。例えば「１２：００  ランチ」という通知は、表現１１６内に含まれるものとして以前に表示していたので、（例えば「３：００  電話会議」を表示する）別の通知が、特定の時間に表示されるべきである。特定の時間において、表現１１６内に含まれて表示されていた「１２：００  ランチ」という通知に置き換わって、（例えば「３：００  電話会議」を表示する）他の通知が表現１１６内に含まれるように表示される。
【００１５】
一般に、通知システム１１２は、アプリケーション１０６から通知のための通知データを受信する。通知データは通知コンテンツの指示を含む。通知コンテンツは、通知のための提示（例えば表示）されるべきコンテンツである。コンテンツは多くの場合表示されるが、他の方法で提示される（例えば触覚技術を使用して音声的に再生される）ことも可能である。通知のためのコンテンツを提示することは、通知を提示することとも呼ばれる。通知は、いつ通知を提示すべきか（例えば日時）の指示も含む。通知システム１１２は、通知のレコードを保持し、通知を適切な時間に提示する。
【００１６】
通知システム１１２は、様々な電力効率化技術を使用して、（例えばコンピューティングデバイス１０２の電力モードにより）表示されないであろう通知を反映するようにＵＩを更新するのを避けるために、どの通知を提示すべきか、及びこれらの通知を反映するようディスプレイデバイス上に表示されるＵＩをいつ更新すべきかを決定する。通知システム１１２は、アプリケーション１０６からの更なる入力なしに通知を管理し、これにより、アプリケーション１０６を実行せず又は実行を再開することなく、アプリケーション１０６に関連付けられた通知を表示するか、他の方法で提示できるようにする。アプリケーション１０６によって提供される通知は、通知の提示の時間にアプリケーションが実行中かどうかに関わらず、通知システム１１２によって提示されることが可能である。コンピューティングデバイス１０２の電力効率、従ってコンピューティングデバイス１０２のバッテリ寿命は、アプリケーション１０６の各々を実行せずに通知を表示又は他の方法で提示することによって改善され得る。
【００１７】
オペレーティングシステム１０４及びアプレーション１０６は、コンピューティングデバイス１０２のユーザからユーザ入力を受信することができる。ユーザ入力は、デバイス１０２のキーパッド又はキーボードの１つ又は複数のキーを押すこと、デバイス１０２のコントローラ（例えばリモートコントロールデバイス、マウス、トラックパッド、タッチパッド等）の１つ又は複数のキーを押すこと、デバイス１０２のタッチパッド又はタッチスクリーンの特定の部分を押すこと、デバイス１０２のタッチパッド又はタッチスクリーン上で特定のジェスチャを行うこと及び／又はデバイス１０２のコントローラ（例えばリモートコントロールデバイス、マウス、トラックパッド、タッチパッド等）上で特定のジェスチャを行うことのような、様々な異なる方法で提供され得る。ユーザ入力は、デバイス１０２の任意の部分をタップすること、デバイス１０２を曲げるかねじること、（デバイス１０２を振ることや、デバイス１０２を回転させること等のような）デバイス１０２の動き検出コンポーネントによって認識され得るアクション等のような、デバイス１０２への他の物理的なフィードバック入力を介して提供されることも可能である。ユーザ入力は、マイクロフォンへの音声又は他の可聴入力による手法、イメージキャプチャデバイスによって観測される手又は他の身体部分の動きによる手法等のような、他の手法によって提供されることも可能である。
【００１８】
コンピューティングデバイス１０２は、オプションで１つ又は複数のサービス１２２とネットワーク１２４を介して通信することができ、サービス１１２から通知データを取得する。ネットワーク１２４は、インターネット、ローカルエリアネットワーク（ＬＡＮ）、公衆電話網、イントラネットあるいは他の公共及び／又は専用のネットワーク、これらの組み合わせ等を含め、様々な異なるネットワークとすることができる。サービス１２２を、様々な異なるタイプのコンピューティングデバイスの１つ又は複数を使用して実装することができ、このようなコンピューティングデバイスは、コンピューティングデバイス１０２に関して上記したものと同様に、十分なメモリとプロセッサリソースを有する十分なリソースデバイスから、限定的なメモリ及び／又は処理リソースを有する低リソースデバイスまでに及ぶ。
【００１９】
通知システム１１２は、オペレーティングシステム１０２内の組み込みの通知システム１１２に関して検討したが、通知システム１１２の機能を、少なくとも部分的に、コンピューティングデバイス１０２又は別のデバイスの１つ又は複数の他のモジュールにおいて実装することができる。例えばコンピューティングデバイス１０２の一部として含まれるが、オペレーティングシステム１０４の外部にある追加のモジュールが、通知システム１１２の少なくとも一部を実装することができる。別の例として、通知システム１１２は、少なくとも部分的にサービス１２２によって実装されることも可能である。
【００２０】
図２は、１つ又は複数の実施形態に係る例示の通知システム２００を図示している。通知システム２００は、例えば図１の通知システム１１２とすることができる。通知システム２００は、システム状態決定モジュール２０２、ＵＩ更新モジュール２０４、アプリケーションインタフェース２０６及び通知ストア２０８を含む。
【００２１】
システム状態決定モジュール２０２は、通知を表示しているコンピューティングデバイスの現在のシステム状態を決定する。現在のシステム状態は、コンピューティングデバイスの現在の利用情報及び／又は設定の指示を指す。例えば現在のシステム状態は、コンピューティングデバイスの現在の電力モード（例えば低電力モード、スリープモード、ハイバネートモード、最高性能モード等）を指すことがある。別の例として、現在のシステム状態は、ディスプレイデバイスが電源オンされるか電源オフされるか、ネットワーク接続（例えば図１のネットワーク１２４への接続）が利用可能であるかどうか等のようなリソースの利用可能性を指すことがある。別の例として、現在のシステム状態は、コンピューティングデバイスがロックされるかどうか（例えばコンピューティングデバイスのユーザがアプリケーションとの対話を再開するために、パスワード、ジェスチャ又は他のユーザ入力を提供する場合）のようなデバイスのアクセス設定を指すことがある。システム状態決定モジュール２０２は、コンピューティングデバイス上で動作しているオペレーティングシステム（例えば図１のオペレーティングシステム１０４）の１つ又は複数のモジュールから、コンピューティングデバイスの様々なイベントをモニタリングすること等により、様々な手法でシステム状態を取得することができる。
【００２２】
ＵＩ更新モジュール２０４は、適切な時間にＵＩを更新して、通知を表示するか又は他の方法で提示する。この表示及び／又は提示は、ディスプレイデバイス（例えば図１のディスプレイデバイス１１０）上で通知を表示すること、１つ又は複数のスピーカを介してオーディオデータを再生すること、触感フィードバックを提供すること（例えばコンピューティングデバイスを揺するか振ること）等を含むことができる。通知を表示又は他の方法で提示する適切な時間は、以下でより詳細に検討されるように、通知自体並びに現在のシステム状態に依存する。
【００２３】
アプリケーションインタフェース２０６は、アプリケーション（例えば図１のアプリケーション１０６）が通知を通知システム２００に提供するのを可能にするインタフェースである。１つ又は複数の実施形態において、アプリケーションインタフェース２０６は、アプリケーションによって呼び出すことができる１つ又は複数のメソッドを公開するアプリケーションプログラミングインタフェース（ＡＰＩ）である。あるいは、通知を記述するデータを、通知システム２００とアプリケーションの双方からアクセス可能な共通の記憶位置に書き込むこと、通知を記述するデータを、様々なメッセージング又はイベント通信システムを介して送信することなどの様々な他のデータ通信技術を使用して、通知を通知システム２００に提供することができる。
【００２４】
アプリケーションによって通知システム２００に提供される通知は、通知のためのコンテンツとメタデータとの双方を含む。通知のためのコンテンツとメタデータを、まとめて通知データと呼ぶことができる。通知のためのコンテンツは、通知として表示されるか又は他の方法で提示されるコンテンツを指す。あるいは、コンテンツ自体を含むのではなく、通知はコンテンツを取得する場所の指示を含むことができる。この指示は、アプリケーションを実行しているコンピューティングデバイス上の場所の識別子（例えば、ファイルシステム内のファイルを識別するパス、ユニフォームリソースロケータ（ＵＲＬ）、ユニフォームリソースインジケータ（ＵＲＩ）等）、あるいは別のデバイス又はサービスの識別子（例えばＵＲＬ、ＵＲＩ又はネットワーク経由でコンテンツを取得することができるサービスを識別する他のリンク）とすることができる。
【００２５】
通知のためのメタデータは、いつ及び／又はどのように通知コンテンツを提示すべきかを示す１つ又は複数の指示を指す。１つ又は複数の実施形態において、通知のためのメタデータは、通知をいつ提示すべきかの指示を含む。この指示は、通知を提示すべき日付及び／又は時間のような様々な形式とすることができる。メタデータは、通知のためのコンテンツが変更される頻度（例えばコンテンツを取得する場所の指示がサービスへのＵＲＬである場合、そのサービスからコンテンツを取得すべき頻度）の指示を含むこともできる。通知のためのメタデータは、通知の寿命（例えば、通知が提示されなくなる終了日付及び／又は時間、通知が提示されるべき期間、すなわちその後に通知が提示されなくなる期間（例えば日数又は時間数）等）を含むことができる。通知システム２００は、通知の寿命が経過した後は通知を提示せず、通知の寿命が経過した通知を（例えば下述する通知ストア２０８から）削除することができる。通知のためのメタデータは、通知がアプリケーションの表現（例えばタイル又はアイコン）であるか、ポップアップ又は一時通知であるか等のような、通知のタイプの指示も含むことができる。
【００２６】
各通知は、通知を通知システム２００に提供するアプリケーションの指示も含む。アプリケーションの指示は典型的に、通知のためのメタデータに含まれるが、代替的には他の方法で提供されることも可能である。通知を提供するアプリケーションは、通知に関連付けられるアプリケーション又は通知に対応するアプリケーションとも呼ばれる。
【００２７】
あるいは、メタデータの少なくとも一部は、アプリケーションが通知を通知システム２００に提供する手法に固有のものとすることができる。例えばアプリケーションインタフェース２０６は、各々異なるタイプの通知について異なるＡＰＩメソッドを公開することができる（例えば通知が、アプリケーションの表現（例えばタイル又はアイコン）の場合にあるメソッドを公開し、通知がポップアップ又は一時通知の場合には別のメソッドを公開する等）。別の例として、アプリケーションインタフェース２０６は、１時間という寿命を有する通知に対して、あるＡＰＩメソッドを公開し、１日という寿命を有する通知に対して別のメソッドを公開すること等ができる。
【００２８】
通知システム２００に提供される通知は、通知ストア２０８において保持され、図２では複数（ｘ）の通知２１０として図示されている。通知システム２００はオプションで、アプリケーションごとに、通知ストア２０８内に保持される通知の数に制限を設けることができる（例えば４０９６個の通知）。通知ストア２０８は、通知を様々な異なる手法のいずれかで保持することができる。通知ストア２０８は、通知を持続性メモリ（例えば非揮発性メモリ）内に保持し、これにより通知は、様々な電力状態の遷移（例えばコンピューティングデバイスのリブート又はリセット）にまたがって保持されることが可能である。通知ストア２０８は、各アプリケーションについて表示すべき次の通知へのポインタ又は識別子を保持することや、各アプリケーションについて表示すべき次の通知をリスト又はレコード内の最初又はトップの通知として保持することのように、アプリケーションについて表示すべき次の通知を容易に識別することができるような方法で通知を保持することができる。
【００２９】
各通知２１０は、通知識別子（ＩＤ）部分２１２、メタデータ部分２１４及びコンテンツ部分２１６を含む。通知ＩＤ部分２１２は、通知２１０の識別子を含む。通知の識別子は、アプリケーションからの異なる通知を相互に区別できるようにする（及びアプリケーションの識別子との組み合わせで、通知システム２００によって使用されて異なる通知を相互に区別できるようにする）ために、通知を通知システム２００に提供したアプリケーションによって割り当てられた識別子、異なる通知を通知システム２００によって相互に区別できるようにするために通知システム２００によって割り当てられた識別子、通知に対するタイムスタンプ（例えば受信の日時）等のような様々な形式をとることができる。メタデータ部分２１４は、上述のようにアプリケーションによって提供される通知についてのメタデータを含む。コンテンツ部分２１６は、上述のようにアプリケーションによって提供される通知についてのコンテンツ（又はコンテンツを取得することができる場所の指示）を含む。
【００３０】
通知が通知システム２００に提供された後、通知システム２００は、適切な時間に通知を表示又は他の方法で提示するのを可能にする情報を有する。ＵＩ更新モジュール２０４は、アプリケーションの更なる実行を必要とせずに、適切な時間に通知を表示するか他の方法で提示する。例えばアプリケーションは、通知を通知システム２００に提供することができ、その後アプリケーションの実行は、終了されるか一時停止されてもよい（例えばアプリケーションはコンピューティングデバイスのメモリ内に残っているが、コンピューティングデバイスのプロセッサによる実行についてスケジュールされない）。ＵＩ更新モジュール２０４は、アプリケーションが終了するか一時停止されても、適切な時間に通知を表示するか他の方法で提示することができる。
【００３１】
１つ又は複数の実施形態において、アプリケーションインタフェース２０６は、アプリケーションが、以前に提供された通知を削除及び／又は修正することも可能にする。アプリケーションは、通知を通知システム２００に提供することに関して上述したのと同様の様々な異なる方法のいずれかで、削除又は修正の通知を提供することによって（例えばＡＰＩを呼び出すことによって）、通知を削除及び／又は修正することができる。以前に提供された通知は、該以前に提供された通知に対して行うべき変更を示すデータをアプケーションが提供することによって、あるいは以前に提供された通知を置換する新たな通知をアプリケーションが提供することによって修正され得る。以前に提供された通知は、その通知ＩＤ２１２によるなどの異なる方法で識別され得る。
【００３２】
ＵＩ更新モジュール２０４は、通知を反映（例えば表示又は提示）するようにＵＩを更新することによって、適切な時間に通知を表示又は他の方法で提示する。ＵＩ更新モジュール２０４は、様々な基準に基づいて、通知を提示するＵＩを更新するのに適切な時間を決定する。これらの様々な基準を使用する際に、ＵＩ更新モジュール２１０４は様々な電力効率化技術を考慮して、コンピューティングデバイスの電力を節約する。一般に、ＵＩ更新モジュール２０４は、通知がコンピューティングデバイスにおいて観測可能である（例えばコンピューティングデバイスのユーザに対して可視又はユーザにより可聴であり、これによりユーザに有益な）場合にのみ、通知において指示された時間（例えば通知のためのメタデータに示されるような、いつ通知を表示すべきかの指示により）に通知を提示するようにＵＩを更新する。（例えばコンピューティングデバイスの電力モードに起因して）通知がコンピューティングデバイスにおいて観測可能でない場合、ＵＩ更新モジュール２０４は、通知で指示された時間に通知を提示するようにＵＩを更新しない。
【００３３】
通知を提示するようＵＩを更新しないＵＩ更新モジュール２０４は、ディスプレイデバイスが下述されるように電源オフされる場合にＵＩを更新しないと決定する等、ＵＩを更新しないという決定を行うＵＩモジュール２０４を指す。通知を提示するようにＵＩを更新しないＵＩ更新モジュール２０４は、特定の状況下（例えばコンピューティングデバイスが低電力モードにある場合）で動作しないＵＩ更新モジュール２０４も指す。したがって、通知を提示するようＵＩを更新しないＵＩ更新モジュール２０４は、ＵＩを更新しないというモジュール２０４によるアクティブな決定と、動作しておらず、したがってＵＩを更新するかどうかに関して決定を行うことができないモジュール２０４の双方を指す。
【００３４】
コンピューティングデバイスにおいて通知が観測可能でない様々な異なる状況が存在する。１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、通知がコンピューティングデバイスにおいて観測可能でない１つ又は複数の電力モードを識別する。一般に、これらの１つ又は複数の電力モードは、低電力モードであり、ある低電力モードではコンピューティングデバイスの様々なリソース（例えばプロセッサ、ストレージデバイス、入力／出力（Ｉ／Ｏ）コンポーネント等）のいずれか１つ又は複数が動作する。これらの１つ又は複数の電力モードは、ハイバネートモード、一時停止モード、接続型スタンバイモード、アイドルモード等のような様々な名前又はラベルを有することができる。ＵＩ更新モジュール２０４は、これらの１つ又は複数の電力モードの指示を用いて構成され得る。コンピューティングデバイスのユーザ又は管理者はオプションで、これらの１つ又は複数の電力モードの少なくとも１つを識別する入力を提供することも可能である。
【００３５】
１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、コンピューティングデバイスのディスプレイデバイス（例えば図１のディスプレイデバイス）が電源オフされている場合に、通知はコンピューティングデバイスにおいて観測可能でないと判断する。あるいはまた、ＵＩ更新モジュール２０４は、他のハードウェア又はリソースが利用可能でなかった場合に、通知はコンピューティングデバイスにおいて観測可能でないと判断することもできる。例えば通知がユーザに対して可聴に再生されるべきものであった場合、ＵＩ更新モジュール２０４は、コンピューティングデバイスのスピーカが電源オフ又はミュートであれば、通知はコンピューティングデバイスにおいて観測可能でないと判断することができる。
【００３６】
１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、通知システム２００が、通知のためのコンテンツに対するアクセスを有していない場合、通知はコンピューティングデバイスにおいて観測可能でないと判断する。例えば通知が、コンテンツを特定のＵＲＬから取得すべきことを示しており、通知システム２００が、その特定のＵＲＬにアクセスすることができるネットワークに接続されていない場合、通知はコンピューティングデバイスにおいて観測可能でないと判断する。
【００３７】
１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、通知に関連付けられたアプリケーションの表現が提示されていない場合、通知はコンピューティングデバイスにおいて観測可能でないと判断する。例えばコンピューティングデバイスは、該コンピューティングデバイスがロック解除されるまで「ロック」画面を表示して、ユーザがコンピューティングデバイスのアプリケーション又は他の機能にアクセスするのを妨げることがある。コンピューティングデバイスは、パスフレーズ又は個人識別番号（ＰＩＮ）のユーザ入力、特定のユーザジェスチャ（例えば画面上で指をスワイプすること）等のような、様々なユーザ入力により様々な方法でロック解除され得る。ロック画面が表示されると、ユーザは表現中をスクロールすることはできないが、いくつかのアプリケーションの表現を表示することができる。ＵＩ更新モジュール２０４は、通知に関連付けられたアプリケーションの表現がロック画面上に表示されない場合、（コンピューティングデバイスがロック解除されるまで）その通知はコンピューティングデバイスにおいて観測可能でないと判断する。別の例として、アプリケーションの表現を、ユーザが（例えば開始ページと１つ又は複数の追加のページの中を）スクロール又は他の方法でナビゲートすることができる異なるページ（又は他の集合若しくはグループ）に表示することができる。ＵＩ更新モジュール２０４は、任意の所与の時間に表示されているページ（又は他の集合若しくはグループ）が、通知に関連付けられたアプリケーションの表現を含んでいない場合、その通知は、その所与の時間にコンピューティングデバイスにおいて観測可能でないと判断する。
【００３８】
ＵＩ更新モジュール２０４はオプションで、異なるルールを異なるタイプの通知に適用することができ、これにより異なるタイプの通知を違う方法でトレーニングすることができることを認識されたい。通知システム２００は、上述のようなアプリケーションの表現（例えばアプリケーションのタイル若しくはアイコン）及びポップアップ若しくは一時通知（例えばトースト）等のような異なるタイプの通知をサポートすることができる。１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、コンピューティングデバイスにおいて通知が観測可能でないと判断する場合、ＵＩ更新モジュール２０４は次いで、そのコンピューティングデバイスにおいて通知が観測可能となるように、コンピューティングデバイスの設定を変更することができる。特定の通知のタイプは、アプリケーションが通知を通知システム２００に提供することよって（例えば通知についてのメタデータによって示される、アプリケーションによって呼び出されるアプリケーションインタフェース２０６のＡＰＩのメソッド等に基づいて）識別される。ＵＩ更新モジュール２０４は、１つ又は複数の他のタイプの通知（例えばアプリケーションのタイル又はアイコン表現）について観測可能でなくてよいが、１つ又は複数のタイプの通知（例えばポップアップ又は一時通知）について、コンピューティングデバイスにおいて通知が観測可能となるようにコンピューティングデバイスの設定を変更することができる。
【００３９】
例えばコンピューティングデバイスが低電力モードにあるためにコンピューティングデバイスにおいて通知が観測可能でない場合、ＵＩ更新モジュール２０４は、（例えば適切なオペレーティングシステムコンポーネント又はモジュールによる電力モード変更を要求することによって）そのコンピューティングデバイスを、コンピューティングデバイスにおいて通知が観測可能な高電力モードにすることができる。別の例として、ディスプレイデバイスが電源オフされているために、通知がコンピューティングデバイスにおいて観測可能でない場合、ＵＩ更新モジュール２０４は、（例えば適切なオペレーティングシステムコンポーネント又はモジュールに、ディスプレイデバイスの電源をオンするように要求することによって）ディスプレイデバイスの電源をオンにすることができる。
【００４０】
したがって、一部の状況において、コンピューティングデバイスの現在の設定のために、通知がコンピューティングデバイスにおいて観測可能でないことがある。したがって、メタデータが通知を提示すべき時を指示しているにもかかわらず、多数の通知が最終的にコンピューティングデバイスによって提示されない可能性がある。しかしながら、コンピューティングデバイスがその後、該コンピューティングデバイスにおいて通知が観測可能な設定へと遷移するか、戻ったことに応答して、ＵＩ更新モジュール２０４は、アプリケーションについてどの通知を提示すべきか決定する。アプリケーションは、複数の通知を通知システム２００に提供することができ、ＵＩ更新モジュール２０４は、通知をいつ提示すべきかを示す通知のためのメタデータに少なくとも部分的に基づいて、これらの複数の通知のうちの適切な１つを識別して提示する。１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、最も最近の通知の寿命が、該通知をまだ提示することができることを示す場合、アプリケーションのための最も最近の通知（例えば通知をいつ提示すべきかの指示に基づいて、最も最近提示されていた通知）を提示する。アプリケーションのための最も最近の寿命が、該通知がもはや提示されるべきでないことを示す場合、ＵＩ更新モジュール２０４は、そのアプリケーションについて次に最近の通知を提示するか、あるいは他のデータを提示するか又はデータを提示しない（例えばブランクの通知を表示する）ことができる。
【００４１】
コンピューティングデバイスにおいて通知が観測可能でない場合にＵＩが更新されないことにより、一部の通知が落とされるか無視されるという状況が生じる可能性がある。落とされた又は無視された通知は、通知ストア２０８から削除され得る。通知が、ある通知（例えば通知Ａ）をいつ提示すべきかの指示を含むが、通知Ａがコンピューティングデバイスにおいて観測可能でなく、またアプリケーションについて別の通知（例えば通知Ｂ）が続いて表示されるべきであるが、通知Ｂがコンピューティングデバイスにおいて観測可能でない場合、次いで、通知Ａを通知システム２００によって落とすか無視することができる。コンピューティングデバイスにおいて通知が観測可能である時間までに、通知Ａは通知Ｂに既に置き換えられているので、ＵＩは通知Ａを提示するように更新される必要はない。
【００４２】
例えばある通知をある時間にアプリケーションについて表示することができ、アプリケーションが、通知システム２００に次の５つの通知、すなわち、２０１３年１月１日の午後１：００に表示すべき通知Ａ、２０１３年１月１日の午後２：００に表示すべき通知Ｂ、２０１３年１月１日の午後３：００に表示すべき通知Ｃ、２０１３年１月１日の午後４：００に表示すべき通知Ｄ、及び２０１３年１月１日の午後５：００に表示すべき通知Ｅ、の５つの通知を提供すると想定する。さらに、通知システム２００を実装するコンピューティングデバイスのディスプレイデバイスが、２０１３年１月１日の午前１１：００に電源オフされ、２０１３年１月１日の午後４：３０まで再び電源オンされないと想定する。ディスプレイデバイスが電源オンされることに応答して、ＵＩ更新モジュール２０４は、通知Ａ、Ｂ及びＣは既に置換されていると決定し、モジュール２０４はしたがって、通知Ａ、Ｂ及びＣを落とすか無視して通知Ｄを表示することができる。
【００４３】
１つ又は複数の実施形態において、通知は、同じコンテンツがその通知の単一のフレーム内に提示される、単一プレゼンテーション通知である。例えば図１の表現１１４として表示される通知は、「シアトル  ７５°/曇り」を識別するコンテンツと曇りのアイコンを含むことができる。あるいは、通知は、複数の異なるコンテンツを連続して提示することができる複数プレゼンテーション通知とすることができる。複数プレゼンテーション通知は、連続して複数の通知のコンテンツを表示することが可能であり、及び／又は単一の通知は、連続して提示される複数のフレームのコンテンツを含むことが可能である。表示されるべき通知及び／又はフレームの数を、アプリケーションが通知を提供することによって（例えば通知についてのメタデータ）、ＵＩ更新モジュール２０４の（コンピューティングデバイスのユーザ又は管理者によって任意選択で変更可能な）構成設定によるなどの異なる方法で識別することができる。
【００４４】
図３は、１つ又は複数の実施形態に従ってアプリケーションの表現の一部として複数の通知を連続して表示する、例示的実装のシステム３００を示している。システム３００は、第１の段階３０２、第２の段階３０４及び第４の段階３０６の使用により図示されている。通知は、アプリケーションの表現の一部として表示するために、様々な異なる方法で配置される様々異なる形式を取ることができる。
【００４５】
図３に図示されるように、例えば複数のフレーム３１０、３１２を有する通知３０８が示されている。第１の段階３０２において、通知３０８のフレーム３１０は、天気アプリケーションの表現のために、雲の図形表現と、「シアトル」というテキストを表示するのに使用される。
【００４６】
第２の段階３０４において、通知３０８のフレーム３１２は、「シアトル」というテキストと、シアトルの付加的な現在の天候条件を記述する「７５°/曇り」というテキストを表示するのに使用される。したがって、通知３０８は、天気アプリケーションの通知の一部として連続して表示されるフレーム３１０、３１２を含むように構成され得る。
【００４７】
追加の通知を、アプリケーションの表現の一部として連続して表示することもできる。第３の段階３０６において示されるように、例えば通知３１４は、太陽と現在の天候条件の図とテキストを「スポーケン/５２°」として表示するのに使用される。したがって、この例示のシステム３００では、ＵＩ更新モジュール（例えば図２のモジュール２０４）を使用して、アプリケーションの通知として表示するために通知３０８、３１４を循環させることができる。ＵＩ更新モジュールは、通知３０８、３１４の循環を繰り返す（例えば通知３１４を表示した後、通知３０８を再表示する）ことができ、あるいは１つの通知又はフレーム（例えば通知３１４）のみを表示し続けることもできる。
【００４８】
図２に戻ると、コンピューティングデバイスが、該コンピューティングデバイスにおいて通知を観測可能な設定へと遷移するか戻ったことに応答して、通知が複数プレゼンテーション通知である場合、ＵＩ更新モジュール２０４は、１つ又は複数の通知のうち、アプリケーションについて連続的に提示すべき複数の通知及び／又はフレームを決定する。ＵＩ更新モジュール２０４は、閾値数（例えば通知を提供するアプリケーションによって指示されるような、表示すべき通知及び／又はフレームの数、例えば５つの通知及び／又はフレーム）を選択し、アプリケーションについて、最も最近の閾値数の通知を提示することができる。最も最近の閾値数の通知のうちの１つ又は複数の通知の寿命が、その通知がもはや提示されるべきでないことを示す場合、次いでＵＩ更新モジュール２０４は、アプリケーションについて次に最近の通知を提示するか、閾値数よりも少ない数の通知を提示し、あるいは他のデータを提示するかデータを提示しない（例えばブランクの通知を表示する）ことがある。
【００４９】
したがって、通知システム２００は、複数のアプリケーションについての通知が、電力効率の良い手法で表示されるか、他の方法で提示されるのを可能にする。アプリケーションは、該アプリケーションの所望の通知を表示させるか提示させるために、バックグラウンドアプリケーションとして実行し続ける必要はなく、及び／又は実行を再開する必要はない。さらに、通知システム２００は、様々な電力効率化技術を使用して、いずれにしてもコンピューティングデバイスでは観測可能でない通知が反映するようにユーザインタフェースが更新されるのを回避する。例えばコンピューティングデバイスが低電力モードにあるとき、及び／又コンピューティングデバイスのディスプレイデバイスが電源オフされているときに、表示すべき通知は、そのコンピューティングデバイスが高電力モードに遷移するか、ディスプレイデバイスが電源オンされるまで表示されない。この場合、コンピューティングデバイスが低電力モードにあり、及び／又はディスプレイデバイスが電源オフにされているために、表示又は提示には電力は消費されない。したがって、ディスプレイデバイスが電源オフされている１時間の間に、２０個の異なる通知が特定の表現内に表示されるべきであった場合、その後ディスプレイデバイスが電源オンされると、最後の通知のみが表示され、他の１９個の通知を表示するのに電力を費す必要はない。
【００５０】
いずれにしてもコンピューティングデバイスでは観測可能でない通知を反映するようにユーザインタフェースが更新されるのを回避することによって、様々な電力節約が達成されることに留意されたい。ユーザインタフェースが更新されないので、ユーザインタフェースを更新することに関与する様々なアクティビティ及び動作が停止し、実行される必要がないので、結果として電力の節約となる。例えば特定の位置から情報を取得すること、ネットワークにアクセスすること、表示又はプレゼンテーション用に情報を処理すること、ユーザインタフェースを修正すること等を実行する必要がない。
【００５１】
１つ又は複数の実施形態において、通知システム２００は、スケジュールされる通知カテゴリや周期的通知カテゴリのような異なるカテゴリの通知をサポートする。特定の通知のカテゴリは、通知を通知システム２００に提供するアプリケーションによって（例えば通知のメタデータで指示された、アプリケーションによって呼び出されるアプリケーションインタフェース２０６のＡＰＩのメソッドに基づいて）識別される。スケジュールされる通知カテゴリは、スケジュールされた時間に提示され、別の通知によって置換されるまで（あるいは通知の寿命の経過後まで）提示され続けるべき通知を指す。周期的通知カテゴリは、特定の（定期的な及び／又は非定期的な）間隔で更新又は置換されることになる通知を指す。特定の間隔で、ＵＩ更新モジュール２０４は、通知の置換コンテンツを（例えば通知内で識別された位置から）取得し、この置換コンテンツを以前に提示したコンテンツの代わりに提示する。
【００５２】
ＵＩ更新モジュール２０４は、異なるカテゴリの通知を、異なるように管理することができる。１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、（通知のメタデータで指示されるように）スケジュールされた通知を提示すべき時の閾値時間内（例えば１行）に、スケジュールされた通知を提示するようにＵＩを更新する。しかしながら、ＵＩ更新モジュール２０４は（上述のように、任意選択で通知のタイプに応じて）、上述のように（例えばコンピューティングデバイスの電力モードに起因して）コンピューティングデバイスにおいて通知が観測可能でない場合、スケジュールされた通知を提示するようにＵＩを更新しない。したがって、スケジュールされた通知について、ＵＩ更新モジュール２０４は、通知を提示するためのかなり細かな時間の粒度に従う。
【００５３】
ＵＩ更新モジュール２０４は、しかしながら、（通知のメタデータで指示されるように）周期的通知を提示すべき時の別の閾値時間（例えば４分）内に、周期的通知を提示するようにＵＩを更新する。しかしながら、ＵＩ更新モジュール２０４は（上述のように、任意選択で通知のタイプに応じて）、上述のように（例えばコンピューティングデバイスの電力モードに起因して）コンピューティングデバイスにおいて通知が観測可能でない場合、周囲的通知を提示するようにＵＩを更新しない。したがって、周期的通知について、ＵＩ更新モジュール２０４は、通知を提示するための荒い時間の粒度に従う。
【００５４】
加えて、１つ又は複数の実施形態において、周期的通知は、通知について表示すべきコンテンツが取得される場所を識別する。ＵＩ更新モジュール２０４は、コンテンツを、別のデバイス又はサービスから、（上述の時間粒度の対象となる）周期的通知についてメタデータで指定された頻度又は間隔で取得する。周期的通知についてのメタデータは、ＵＩ更新モジュール２０４が他のデバイス又はサービスからコンテンツの取得を開始すべき時を示す時間、あるいは要求に固有の時間（例えば要求を受信する時間に開始するか、要求を受信した後の最初の時間間隔で開始する等）を含むことができる。
【００５５】
１つ又は複数の実施形態において、ＵＩ更新モジュール２０４は、別のデバイス又はサービス（例えば図１のサービス１２２）からコンテンツを取得する。そのような実施形態において、複数の通知について（例えば同じ及び／又は異なるアプリケーションから）コンテンツを取得すべき場合、ＵＩ更新モジュール２０４は、そのコンテンツについての要求を一緒にバッチ処理するか合体させることができる。ＵＩ更新モジュール２０４はしたがって、複数の要求を送信し、複数の通知についてのコンテンツを一度に一緒に取得することができ、次いで１つ又は他の通知についてのコンテンツを取得するまで、閾値時間の間、（例えば５分〜１０分）待機する。コンテンツについて要求を一緒にバッチ処理するか合体させることによって、コンピューティングデバイスの様々なリソース（例えばネットワークアダプタ及び／又は他のネットワーキングコンポーネント、プロセッサ、ストレージデバイス等）が電源オンされる頻度を低減することができ、これによりコンピューティングデバイスの電力を節約することができる。
【００５６】
上記で検討したように、アプリケーションインタフェースは、アプリケーションによって呼び出すことができる１つ又は複数メソッドを公開するＡＰＩとすることができる。以下は、アプリケーションインタフェース２０６内に含めることができるＡＰＩメソッドの例である。これらのＡＰＩメソッドは例示であり、代替的に他のＡＰＩメソッドを使用することができることが認識されよう。
【００５７】
表１は、通知ストア２０８において保持される、ＳｃｈｅｄｕｌｅｄＴｉｌｅＮｏｔｉｆｉｃａｔｉｏｎオブジェクトの新たなインスタンスを作成してインスタンス化するコンストラクタの例を示す。ＳｃｈｅｄｕｌｅｄＴｉｌｅＮｏｔｉｆｉｃａｔｉｏｎオブジェクトは、スケジュールされる通知カテゴリの通知の例である。
【００５８】
【表１】
2015515039.tif 000003
表１のメソッドは、２つのパラメータ、すなわちｃｏｎｔｅｎｔ（コンテンツ）パラメータと、ｄｅｌｉｖｅｒｙＴｉｍｅ（配信時間）パラメータである。ｃｏｎｔｅｎｔパラメータは、通知データを提供する。通知データは、その通知について表示又は他の方法で提示されるべきコンテンツと、通知についてのメタデータとを含む。１つ又は複数の実施形態において、コンテンツは、公知の（例えば通知システム２００及びアプリケーションに公知の）フォーマットを有するｘｍｌドキュメントであるが、代替的に、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）、バイナリフォーマット、イメージ等のような他のデータ識別技術も使用することができる。ｄｅｌｉｖｅｒｙＴｉｍｅパラメータは、通知を表示又は他の方法で提示すべき時間を提供する。ｄｅｌｉｖｅｒｙＴｉｍｅパラメータは、特定の日時、現在の日時からのオフセット等のような様々な公知のフォーマットとすることができる。
【００５９】
表２は、ＳｔａｒｔＰｅｒｉｏｄｉｃＵｐｄａｔｅメソッドの例を示しており、このメソッドは、該メソッドを呼び出すと開始する、通知についての一連の時間コンテンツの変更を開始する。ＳｔａｒｔＰｅｒｉｏｄｉｃＵｐｄａｔｅメソッドが呼び出されたことに応答して、通知オブジェクトが作成され、通知ストア２０８に保持される。ＳｔａｒｔＰｅｒｉｏｄｉｃＵｐｄａｔｅメソッドの結果、周期的通知カテゴリの通知の例であるオブジェクトが作成されることになる。
【００６０】
【表２】
2015515039.tif 000004
表２のメソッドは、２つのパラメータ、すなわちｔｉｌｅＣｏｎｔｅｎｔ（タイルコンテンツ）パラメータと、ｒｅｑｕｅｓｔｅｄＩｎｔｅｒｖａｌ（要求間隔）パラメータである。ｔｉｌｅＣｏｎｔｅｎｔパラメータは、通知（及びオプションで通知についてのメタデータ）について表示又は他の方法で提示されるべきコンテンツが取得されることになるＵＲＩを識別する。１つ又は複数の実施形態において、コンテンツは、公知の（例えば通知システム２００並びにｘｍｌドキュメント格納するアプリケーション及び／又はサービスに公知の）フォーマットを有するｘｍｌドキュメントであるが、代替的に、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）、バイナリフォーマット、イメージ等のような他のデータ識別技術も使用することができる。ｒｅｑｕｅｓｔｅｄＩｎｔｅｒｖａｌパラメータは、通知について表示又は提示すべき新たなコンテンツのためにＵＲＩがアクセスされる頻度を識別する。
【００６１】
図４は、１つ又は複数の実施形態に従って電力効率の良いアプリケーション通知システムを実装するための例示的プロセスを示すフローチャートである。プロセス４００は、図１の通知システム１１２又は図２の通知システム２００のようなデバイスの通知システムによって実行され、ソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせで実装され得る。プロセス４００は、動作のセットとして示されているが、これらの様々な動作のオペレーションを実行するために、示されている順序には限定されない。プロセス４００は、電力効率の良いアプリケーション通知システムを実装するための例示的なプロセスであり、電力効率の良いアプリケーション通知システムを実装することに関する追加の議論は、他の図に関連して本明細書内に含まれている。
【００６２】
プロセス４００において、アプリケーションに関連付けられた通知が受信される（動作４０２）。通知をアプリケーションから受信することができ、通知は、上述のように通知のためのメタデータと、通知のためのコンテンツとの双方を含む。あるいは、通知は、通知についてのコンテンツ自体ではなく、上述のように通知についてのコンテンツを取得することができる場所の指示を含むことができる。
【００６３】
ユーザインタフェースが、通知のメタデータ内に含まれるコンテンツをいつ提示すべきかの指示に少なくとも部分的に基づく時間に、通知のためのコンテンツを提示するように更新される（動作４０４）。ユーザインタフェースを更新する時間は、上述のように通知がデバイスにおいて観測可能か否かにも少なくとも部分的に基づくものとすることができる。通知のためのコンテンツは、上述のように、アプリケーションの実行が終了したか一時停止したかに関わらず、またアプリケーションを実行するか実行を再開することなく提示される。
【００６４】
図５は、１つ又は複数の実施形態に従って電力効率の良いアプリケーション通知システムを起動するための例示的プロセスを示すフローチャートである。プロセス５００は、図１のアプリケーション１０６のようなデバイス上のアプリケーションによって実行される。プロセス５００は典型的にはソフトウェアで実装されるが、代替的として、少なくとも部分的にファームウェア及び／又はハードウェアで、あるいはソフトウェア、ファームウェア及び／又はハードウェアの組み合わせで実装することもできる。プロセス５００は、動作のセットとして示されているが、これらの様々な動作のオペレーションを実行するために、示されている順序には限定されない。プロセス５００は、電力効率の良いアプリケーション通知システムを起動するための例示的なプロセスであり、電力効率の良いアプリケーション通知システムを起動することに関する追加の議論は、他の図に関連して本明細書内に含まれている。
【００６５】
プロセス５００において、プロセス５００を実装するアプリケーションに関連付けられる通知のためのコンテンツの識別情報が通知システムに提供される（動作５０２）。通知が通知システムに提供されて、これにより通知システムは、上述のように、コンテンツを提示する時間にアプリケーションの実行が終了しているか一時停止しているかに関わらず、通知のコンテンツを提示することができる。アプリケーションによって提供されるコンテンツの識別情報は、上述のように、通知に対して提示されるべきコンテンツとすることができ、あるいは通知のために提示されるべきコンテンツを取得することができる場所の指示とすることもできる。
【００６６】
通知のためのメタデータも、プロセス５００を実装するアプリケーションによって通知システムに提供される（動作５０４）。通知のためのメタデータは、通知のためのコンテンツをいつ提示すべきかを指示し、また上述のように追加のメタデータを含むことができる。
【００６７】
通知、受信、送信、取得等のような、様々なモジュールによって実行される様々なアクションが本明細書において検討されている。本明細書において、あるアクションを実行するように説明された特定のモジュールは、そのアクションを実行するその特定のモジュール自体、あるいはそのアクションを実行する（又はその特定のモジュールとともにアクションを実行する）別のコンポーネント又はモジュールを呼び出すか又は他の方法でアクセスする特定のモジュールを含む。したがって、アクションを実行する特定のモジュールは、アクションを実行する特定のモジュール自体及び／又はそのアクションを実行する特定のモジュールによって呼び出されるか他の方法でアクセスされる別のモジュールを含む。
【００６８】
図６は、例示的システムを全体的に６００として示しており、該システムは、本明細書で説明される様々な技術を実装することができる１つ又は複数のコンピューティングシステム及び／又はデバイスを表す例示のコンピューティングデバイス６０２を含む。コンピューティングデバイス６０２は、例えばユーザに関連付けられるデバイス（例えば図１のコンピューティングデバイス１０２）、サービスのサーバ（例えば図１のサービス１２２）、オンチップシステム及び／又は任意の他の適切なコンピューティングデバイス又はコンピューティングシステムとすることができる。
【００６９】
図示されるように、コンピューティングデバイス６０２は、処理システム６０４、１つ又は複数のコンピュータ読取可能媒体６０６並びに１つ又は複数のＩ／Ｏインタフェース６０８を含み、これらは相互に通信可能に接続される。図示されていないが、コンピューティングデバイス６０２は、様々な構成要素を相互に結合するシステムバスあるいは他のデータ及びコマンド伝送システムを更に含んでもよい。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス及び／又は様々なバスアーキテクチャのいずれかを使用するプロセッサ若しくはローカルバスのような、異なるバス構造のいずれか１つ又は組み合わせを含むことができる。制御及びデータラインのような様々な他の例も考慮される。
【００７０】
処理システム６０４は、ハードウェアを使用して１つ又は複数の動作を実行する機能を表す、したがって、処理システム６０４は、プロセッサ、機能ブロック等として構成され得るハードウェア要素６１０を含むように図示されている。これは、ハードウェアにおける特定用途向け集積回路あるいは１つ又は複数の半導体を使用して形成される他の論理回路としての実装を含み得る。ハードウェア要素６１０は、形成される材料又は使用される処理機構によって制限されない。例えばプロセッサは、半導体及び／又はトランジスタ（例えば電子集積回路（ＩＣ））から構成され得る。そのようなコンテキストにおいて、プロセッサ実行可能な命令は電気的に実行可能な命令であり得る。
【００７１】
コンピュータ読取可能媒体６０６は、メモリ／ストレージ６１２を含むように図示されている。メモリ／ストレージ６１２は、１つ又は複数のコンピュータ読取可能媒体に関連付けられたメモリ／ストレージ機能を表す。メモリ／ストレージ６１２は、揮発性媒体（ランダムアクセスメモリ（ＲＡＭ）のような）及び／又は不揮発性媒体（読取専用メモリ（ＲＯＭ）、フラッシュメモリ、光ディスク、磁気ディスク等）を含み得る。メモリ／ストレージ６１２は、固定の媒体（例えばＲＡＭ、ＲＯＭ、固定のハードドライブ等）だけでなく、取外し可能媒体（例えばフラッシュメモリ、取外し可能ハードドライブ、光ディスク等）も含んでよい。コンピュータ読取可能媒体６０６は、以下で更に説明されるように様々な他の方法で構成されることもある。
【００７２】
入力／出力インタフェース６０８が、ユーザがコマンド及び情報をコンピューティングデバイス６０２に入力するのを可能にし、ユーザ及び／又は様々な入力／出力デバイスを使用する他の構成要素若しくはデバイスに情報を提示することも可能にする機能を表す。入力デバイスの例には、キーボード、カーソル制御デバイス（例えばマウス）、マイクロフォン、スキャナ、タッチ機能（例えば物理的な接触を検出するように構成される容量又は他のセンサ）、（例えば赤外振動数のような可視及び非可視波長を使用して、ジェスチャのような接触を伴わない動きを検出し得る）カメラ等が含まれる。出力デバイスの例には、ディスプレイデバイス（例えばモニタ若しくはプロジェクタ）、スピーカ、プリンタ、ネットワークカード、触覚応答デバイス等が含まれる。したがって、コンピューティングデバイス６０２は、以下で更に説明されるようなユーザインタラクションをサポートする様々な方法で構成され得る。
【００７３】
コンピューティングデバイス６０２は通知システム６２０も含む。通知システム６２０は、上記で検討したように提示されるべき通知を管理する。通知システム６２０は、例えば図１の通知システム１１２又は図２の通知システム２００とすることができる。
【００７４】
様々な技術は、本明細書においてソフトウェア、ハードウェア要素又はプログラムモジュールの一般的なコンテキストで説明されている。一般に、そのようなモジュールは、特定のタスクを実行するか特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、要素、構成要素、データ構造等を含む。本明細書で使用されるとき、「モジュール」、「機能」及び「構成要素」という用語は、一般的に、ソフトウェア、ファームウェア、ハードウェア又はその組み合わせを表す。本明細書で説明される技術の特徴は、プラットフォーム独立であり、これは、本技術が、様々なプロセッサを有する様々な市販のコンピューティングプラットフォームにおいて実装されてよいことを意味する。
【００７５】
説明されるモジュール及び技術の実装を、何らかの形式のコンピュータ読取可能媒体上に格納するか、この媒体にわたって伝送してもよい。コンピュータ読取可能媒体は、コンピューティングデバイス６０２によってアクセス可能な様々な媒体を含んでよい。限定ではなく例として、コンピュータ読取可能媒体は「コンピュータ読取可能記憶媒体」と「コンピュータ読取可能信号媒体」を含むことがある。
【００７６】
「コンピュータ読取可能記憶媒体」は、単なる信号伝送、搬送波又は信号自体とは対照的に、情報の持続的及び／又は非一時的な記憶を可能にする媒体及び／又はデバイスを指すことがある。したがって、コンピュータ読取可能記憶場媒体は、非信号担持媒体を指す。コンピュータ読取可能記憶媒体は、揮発性及び非揮発性、取外し可能及び取外し不可能な媒体のようなハードウェア、並びに／あるいはコンピュータ読取可能命令、データ構造、プログラムモジュール、論理要素／回路又は他のデータのような情報の記憶に適した方法又は技術で実装される記憶デバイスを含む。コンピュータ読取可能記憶媒体の例には、限定ではなく例として、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気記憶デバイス、あるいは所望の情報を格納するのに適切で、コンピュータによってアクセス可能な他のストレージデバイス、有形媒体又は製品が含まれ得る。
【００７７】
「コンピュータ読取可能信号媒体」は、ネットワークを介するような命令をコンピューティングデバイス６０２のハードウェアに伝送するように構成される信号担持媒体を指すことがある。信号媒体は、典型的にコンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータを、搬送波、データ信号又は他の伝送機構のような変調データ信号に具現化し得る。信号媒体は任意の情報配信媒体も含む。「変調データ信号」という用語は、情報を信号にエンコードするような手法で設定又は変更された特性の１つ又は複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、音響、ＲＦ、赤外線及び他の無線媒体のような無線媒体とを含む。
【００７８】
前述したように、ハードウェア要素６１０及びコンピュータ読取可能媒体６０６は、一部の実施形態において本明細書で説明される技術の少なくとも一部を実装するのに用いられるハードウェアの形式で実装される、命令、モジュール、プログラム可能デバイスロジック及び／又は固定デバイスロジックを表す。ハードウェア要素は、集積回路又はオンチップシステム、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ：complex  programmable  logic  device）及びシリコン若しくは他のハードウェアデバイスによる他の実装の構成要素を含み得る。このコンテキストにおいて、ハードウェア要素は、命令、モジュール及び／又はハードウェア要素によって具現化されるロジックにより定義されるプログラムタスクを実行する処理デバイスとして、並びに例えば前述のコンピュータ読取可能記憶媒体を実行する命令を格納するのに用いられるハードウェアデバイス並びにとして動作することができる。
【００７９】
前述の組み合わせを使用して、本明細書で説明される様々な技術及びモジュールを実装してもよい。したがって、ソフトウェア、ハードウェア又はプログラムモジュール及び他のプログラムモジュールを、任意の形式のコンピュータ読取可能媒体において並びに／あるいは１つ又は複数のハードウェア要素６１０によって具現化される、１つ又は複数の命令並び／あるいはロジックとして実装してもよい。コンピューティングデバイス６０２は、ソフトウェア及び／又はハードウェアモジュールに対応する特定の命令及び／又は機能を実装するように構成され得る。したがって、コンピューティングデバイス６０２によってソフトウェアとして実行可能なモジュールの実装は、例えばコンピュータ読取可能記憶媒体及び／又は処理システムのハードウェア要素６１０の使用を通じて、少なくとも部分的にハードウェアで達成され得る。命令及び／又は機能は、本明細書で説明される技術、モジュール及び実施例を実装するのに、１つ又は複数の製品（例えば１つ又は複数のコンピューティングデバイス６０２及び／又は処理システム６０４）によって実行可能／動作可能である。
【００８０】
様々な実装において、コンピューティングデバイス６０２は、コンピュータ６１４、モバイル６１６及びテレビジョン６１８における使用のような、様々な異なる構成を想定し得る。これらの構成はそれぞれ、一般に異なる構成及び能力を有するデバイスを含み、したがって、コンピューティングデバイス６０２は、異なるデバイスクラスの１つ又は複数に従って構成され得る。本明細書で説明される技術は、コンピューティングデバイス６０２のこれらの様々な構成によってサポートされ、本明細書で説明された技術の特定の例に限定されない。例えばコンピューティングデバイス６０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含む、デバイスのコンピュータ６１４クラスとして実装され得る。
【００８１】
コンピューティングデバイス６０２は、モバイルフォン、ポータブル音楽プレイヤ、ポータブルゲームデバイス、タブレットコンピュータ、マルチスクリーンデバイス等のようなモバイルデバイスを含む、デバイスのモバイル６１６クラスとして実装されることもある。コンピューティングデバイス６２０は、簡易な視聴環境において一般により大きい画面を有するか接続されるデバイスを含む、デバイスのテレビジョン６１８クラスとして実装されることもある。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソール等を含む。
【００８２】
本主題を、構造的特徴及び／又は方法的動作に特有の言語で説明してきたが、特許請求の範囲において定義される本主題は、必ずしも上述の具体的な特徴又は動作に限定されないことを理解されたい。むしろ、上述の具体的な特徴及び動作は、特許請求の範囲を実装するための例示的形式として開示されている。
【図１】
2015515039.tif 000005
【図２】
2015515039.tif 000006
【図３】
2015515039.tif 000007
【図４】
2015515039.tif 000008
【図５】
2015515039.tif 000009
【図６】
2015515039.tif 000010
【国際調査報告】
2015515039.tif 000011
2015515039.tif 000012