(57)【特許請求の範囲】
【請求項１】
方法であって、
ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示であって、前記第１の装置で発生しており前記第１の装置によって検出されている前記イベントに応答して、前記ユーザアカウントに関連付けられた前記第１の装置から送信されるものである、前記イベントを示す前記第１の標示をサーバが受信し、
前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、
その判定した一つまたは複数の特性が少なくとも１つの選択基準に合致するかどうかを検出し、
前記ユーザアカウントに関連付けられた一つまたは複数の装置から第２の装置を自動的に識別し、
前記判定した一つまたは複数の特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記第２の装置に提供することを備え、前記第１の装置での前記イベントを前記第２の装置から管理できるように、その提供された前記イベントの前記第１の標示が前記第２の装置に表示される、方法。
【請求項２】
前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記第２の装置に表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、
前記行動を前記第１の装置に送信することを更に備え、前記イベントは前記第１の装置で前記行動に基づき管理される、請求項１の方法。
【請求項３】
前記行動が前記第１の装置で受信した前記イベントに対する通知を却下した場合、前記行動を前記第１の装置と、前記ユーザアカウントに関連付けられた一つまたは複数の他の装置とにブロードキャストすることを更に備え、前記通知は、前記第１の装置および前記一つまたは複数の他の装置で却下される、請求項２の方法。
【請求項４】
前記イベントの前記第１の標示に関連付けられた第１のコンテンツを受信し、
その受信した第１のコンテンツを、前記イベントの前記第１の標示とともに表示させるために、前記ユーザアカウントに関連付けられた前記第２の装置に提供することを更に備える請求項１の方法。
【請求項５】
前記第１のコンテンツがリモートキャッシュ内の画像への参照を含む場合、その参照を前記第２の装置に提供することを更に備え、前記第２の装置は、前記画像が当該第２の装置で利用可能でなければ、前記参照に基づき前記キャッシュから前記画像を表示のために取得する、請求項４の方法。
【請求項６】
前記第２の装置に表示された前記イベントの前記第１の標示に応答して第２のコンテンツを受信し、
受信した第２のコンテンツを前記第１の装置に表示のために供給すること
を更に備える請求項１の方法。
【請求項７】
前記イベントの前記第１の標示は前記第２の装置のウェブブラウザに表示され、前記第１の装置はモバイルコンピューティング装置であり、前記第２の装置はデスクトップコンピューティング装置である、請求項１の方法。
【請求項８】
プロセッサによって実行されると当該プロセッサに動作を行わせる命令を格納した機械読み取り可能媒体であって、前記動作が、
ユーザアカウントに関連付けられた第１の装置で発生しているイベントを検出し、
前記イベントの第１の標示をサーバに送信し、検出された前記イベントの特性が少なくとも１つの基準に合致した場合に前記サーバは前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた第２の装置に提供し、
前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記第２の装置に表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、
前記イベントを前記第１の装置で前記行動に基づき管理すること
を備える、機械読み取り可能媒体。
【請求項９】
前記プロセッサによって実行されると当該プロセッサに動作を行わせる命令を更に格納している前記機械読み取り可能媒体であって、前記動作が
前記イベントの前記第１の標示に関連付けられたコンテンツを受信し、
その受信した第１のコンテンツを前記サーバに提供することを更に備え、前記サーバは、前記第１のコンテンツを、前記イベントの前記第１の標示とともに表示させるために、前記ユーザアカウントに関連付けられた前記第２の装置に提供する、請求項８の機械読み取り可能媒体。
【請求項１０】
前記プロセッサによって実行されると当該プロセッサに動作を行わせる命令を更に格納している前記機械読み取り可能媒体であって、前記動作が
前記イベントが別のユーザアカウントから開始された場合には、その別のユーザアカウントに関連付けられた画像が前記第１の装置で利用可能であるかどうかを判定し、
前記画像が前記第１の装置で利用可能であれば、前記画像への参照を生成し、
その生成した参照に基づき、前記画像がリモートキャッシュで利用可能であるかどうかを判定し、
前記画像が前記リモートキャッシュで利用可能でなければ、前記画像を前記リモートキャッシュにアップロードし、
前記画像が前記リモートキャッシュで利用可能であると判定された場合には、前記サーバに提供した前記イベントの前記第１の標示に、生成した前記参照を含めることを更に備え、前記第２の装置は当該参照に基づき前記リモートキャッシュから前記画像を取得する、請求項８の機械読み取り可能媒体。
【請求項１１】
前記画像が前記第２の装置で利用可能ではない場合には、前記第２の装置は前記参照に基づき前記リモートキャッシュから前記画像を取得する、請求項１０の機械読み取り可能媒体。
【請求項１２】
前記プロセッサによって実行されると当該プロセッサに動作を行わせる命令を更に格納している前記機械読み取り可能媒体であって、前記動作が
キャッシュされた各画像を、前記イベントの前記第１の標示とともに前記第２の装置に送信する前に、前記第１の装置上に生成された固有キーで暗号化することを備える、請求項１０の機械読み取り可能媒体。
【請求項１３】
前記プロセッサによって実行されると当該プロセッサに動作を行わせる命令を更に格納している前記機械読み取り可能媒体であって、前記動作が
キャッシュされた各画像を、前記第１の装置上に生成されて前記第２の装置に送信されるコンテンツベースキーで暗号化することを備える、請求項１０の機械読み取り可能媒体。
【請求項１４】
前記プロセッサによって実行されると当該プロセッサに動作を行わせる命令を更に格納している前記機械読み取り可能媒体であって、前記動作が
前記第１の標示の有効期間の満了時間を示すＴＴＬ（ｔｉｍｅ−ｔｏ−ｌｉｖｅ）値を前記イベントの前記第１の標示とともに含めることを備える、請求項８の機械読み取り可能媒体。
【請求項１５】
命令を備えるメモリと、
プロセッサであって、
ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示であって、前記第１の装置で発生しており前記第１の装置によって検出されている前記イベントに応答して、前記ユーザアカウントに関連付けられた前記第１の装置から送信されるものである、前記イベントを示す前記第１の標示をサーバが受信し、
前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、
その判定した特性が少なくとも１つの選択基準に合致するかどうかを検出し、
前記ユーザアカウントに関連付けられた一つまたは複数の装置を自動的に識別し、
前記判定した特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記一つまたは複数の装置にブロードキャストするように前記命令を実行するように構成される前記プロセッサとを備え、前記第１の装置での前記イベントを前記一つまたは複数の第２の装置のいずれからでも管理できるように、提供された前記イベントの前記第１の標示は前記一つまたは複数の装置に同時にリアルタイムで表示される、システム。
【請求項１６】
前記プロセッサは前記命令を実行して、
前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記一つまたは複数の装置のうちのいずれかに表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、
前記行動を前記第１の装置に送信するように更に構成され、前記イベントは前記第１の装置で前記行動に基づき管理される、請求項１５のシステム。
【請求項１７】
前記プロセッサは前記命令を実行して、
前記行動が前記第１の装置で受信した前記イベントに対する通知を却下した場合、前記行動を前記第１の装置と、前記ユーザアカウントに関連付けられた一つまたは複数の他の装置とにブロードキャストするように更に構成され、前記通知は、前記第１の装置および前記一つまたは複数の他の装置で却下される、請求項１６のシステム。
【請求項１８】
前記第１の装置は第１の地理的位置にあり、前記第２の装置は第２の地理的位置にある、請求項１５のシステム。
【請求項１９】
判定された前記特性が、前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに、前記選択基準に合致する請求項１５のシステム。
【請求項２０】
判定された前記特性が、前記ユーザアカウントに関連付けられたユーザ連絡先からの不在着信を含むときに、前記選択基準に合致する請求項１５のシステム。
【請求項２１】
判定された前記特性が前記少なくとも１つの選択基準に合致しなければ、前記イベントの前記第１の標示は、判定された前記特性に基づき、前記ユーザアカウントに関連付けられた前記第２の装置に、表示のためにブロードキャストされない請求項１５のシステム。
【請求項２２】
前記プロセッサは前記命令を実行して、
前記ユーザアカウントに関連付けられた前記第１の装置で検出された前記イベントの前記第１の標示が、以前に受信した一つまたは複数の標示と重複したものであるかを判定し、
前記イベントの前記第１の標示が以前に受信した一つまたは複数の標示と重複したものではないと判定された場合には、前記イベントの前記第１の標示を、前記第２の装置と、前記ユーザアカウントに関連付けられた一つまたは複数の他の装置とにブロードキャストし、
前記イベントの前記第１の標示が以前に受信した一つまたは複数の標示と重複したものであると判定された場合には、前記第２の装置および前記ユーザアカウントに関連付けられた前記一つまたは複数の他の装置への前記イベントの前記第１の標示のブロードキャストを禁止する
ように更に構成される、請求項１５のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概してモバイル装置およびデスクトップ装置等のコンピューティング装置に関し、特に、そうした装置上の通知の表示に関する。
【背景技術】
【０００２】
多数のコンピューティング装置を手に入れて使用するユーザが増えている。例えば、或るユーザはスマートフォン、タブレットおよびラップトップコンピュータを使用することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本開示の発明は、装置間相互通知に関する。
【課題を解決するための手段】
【０００４】
いくつかの革新的実装例では、本開示の主題は方法で実施できる。その方法は、ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示を受信し、前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、その判定した特性が少なくとも１つの選択基準に合致するかどうかを検出し、前記ユーザアカウントに関連付けられた一つまたは複数の装置から第２の装置を自動的に識別し、前記判定した特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記第２の装置に提供することを備え、前記第１の装置での前記イベントを前記第２の装置から管理できるように、その提供された前記イベントの前記第１の標示が前記第２の装置に表示される。
【０００５】
いくつかの革新的実装例では、本開示の主題は機械読み取り可能媒体で実施できる。その機械読み取り可能媒体は、プロセッサによって実行されると当該プロセッサに動作を行わせる命令を含み、その動作が、ユーザアカウントに関連付けられた第１の装置でイベントを検出し、前記イベントの第１の標示をサーバに提供し、検出された前記イベントの特性が少なくとも１つの基準に合致した場合に前記サーバが前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた第２の装置に提供し、前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記第２の装置に表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、前記イベントを前記第１の装置で前記行動に基づき管理することを含む。
【０００６】
いくつかの革新的実装例では、本開示の主題はシステムで実施できる。そのシステムは、命令を備えるメモリと、プロセッサであって、ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示を受信し、前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、その判定した特性が少なくとも１つの選択基準に合致するかどうかを検出し、前記ユーザアカウントに関連付けられた一つまたは複数の装置を自動的に識別し、前記判定した特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記一つまたは複数の装置にブロードキャストするように前記命令を実行するように構成される前記プロセッサとを備え、前記第１の装置での前記イベントを前記一つまたは複数の第２の装置のいずれからでも管理できるように、提供された前記イベントの前記第１の標示は前記一つまたは複数の装置に同時にリアルタイムで表示される。
【０００７】
当業者であれば、本発明の技術の様々な構成が例示として示され説明される以下の詳細な説明から本発明の技術の他の構成例が容易に明らかなものとなるであろう。本発明の技術は、他の異なる構成が可能であり、そのいくつかの詳細は、本発明の範囲から逸脱することなく、様々な他の点で変更することができると理解されるであろう。したがって、図面および詳細な説明は、単なる例示であり限定的ではないとみなされるべきである。
【０００８】
本発明の新規な特徴は添付の特許請求の範囲に記載されるが、説明の目的で、本発明のいくつかの構成例を以下に要約する添付図面に示す。
【図面の簡単な説明】
【０００９】
【図１】本発明の技術のいくつかの実装例を実施するのに適した装置とネットワーク環境の一例の図である。
【図２】表示されたイベント標示が含まれる、クライアントコンピューティング装置でのユーザインターフェースの例を示す図。
【図３Ａ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図３Ｂ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図３Ｃ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図３Ｄ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図３Ｅ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図３Ｆ】別のコンピューティング装置に起こったイベントに基づく通知が或るコンピューティング装置に表示される例示的状況を示す図。
【図４Ａ】表示された通知の例を示す図。
【図４Ｂ】通知インターフェースの異なる例を示す図。
【図４Ｃ】通知インターフェースの異なる例を示す図。
【図５】図１に示されたいくつかの構成要素間でのメッセージングフローの例を示す図。
【発明を実施するための形態】
【００１０】
以下の詳細な説明は、本発明の技術の様々な構成の説明として意図されており、本発明の技術を実施できる唯一の構成を代表するものを意図していない。添付図面は、本明細書に組み込まれ、詳細な説明の一部を構成する。本発明の技術は、明細書に記載された特定の詳細に限定されず、これらの特定の詳細構成なしで実施されてもよい。
【００１１】
ユーザ達はしばしば多数のコンピューティング装置を使用することがあり、これらの装置には、スマートフォン、タブレットコンピュータ、デスクトップコンピュータ、スマートウォッチ等が含まれる。あるコンピューティング装置（例えばスマートフォン）からユーザが離れているときに、そのコンピューティング装置にイベントが生じることがある。すると、そのユーザはそのイベントを見逃し、ユーザがそのコンピューティング装置の近くにいるときに生じたそのイベントを後になってから気付くことがある。例えば、ユーザが仕事場にいてデスクトップコンピュータで作業しているときに、自宅のユーザのスマートフォンに電話がかかることがある。この状況では、そのユーザは、自分のスマートフォンが鳴っていることや電話がかかってきていることに気付けない。その結果、そのユーザは、例えばそのユーザの至急の対処が必要なタイムセンシティブな電話呼び出しを逃すことがある。更に、そのスマートフォンが鳴り続けたり振動し続けることがあり、スマートフォンの近くにいる人を煩わせる。別の例では、スマートフォンがユーザのハンドバッグやポケットの中にあるときにそのユーザが別の装置で作業していたり別の装置に注意を向けていることがある。ハンドバッグやポケットの中のスマートフォンに通知（例えば電話呼び出しまたはメッセージ）があると、ユーザはその別の装置から注意を外し、スマートフォンを取出して、メッセージすなわち通知を見る必要がある。したがって、実行中の作業に対するユーザの注意が中断される。別の状況例では、ユーザがスマートフォンから離れている間にメッセージングサービスメッセージ（例えばショートメッセージ）をユーザのスマートフォンで受信することがある。この状況では、ユーザはメッセージを受信したことに気付かず、ユーザが物理的にスマートフォンの近くはいてそのスマートフォンを使えるまでメッセージに対して返信できないであろう。更に別の状況例では、ユーザが頻繁に様々な場所に移動することがあり、そのユーザがそれらの場所でユーザに使用できる任意の装置を使用していることがある。この場合にも、ユーザは、様々な装置の内の特定の装置に送信されたメッセージを見逃すことがある。というのは、ユーザがその特定の装置の近くにおらずその特定の装置を使用できず、その代わりに別の装置を使用しているからである。これらの状況例で、ユーザエクスペリエンスは損なわれる。
【００１２】
いくつかの実装例では、ユーザアカウントに関連付けられた第１の装置で検出されたイベントの第１の標示がサーバで受信され得る。一例では、第１の装置は、ユーザがユーザ名およびパスワードを含み得るユーザ信用証明をもってその装置にサインインまたはログインすると、ユーザアカウントに関連付けられ得る。別の例では、第１の装置は、ユーザが当該第１の装置にインスタンス化されたアプリケーションにサインインまたはログインすると、ユーザアカウントに関連付けられ得る。更なる別の例では、第１の装置は、ユーザアカウントに事前登録または関連付けられてもよい。第１の装置で検出されるイベントは、第１の装置での音声呼（voice call）リクエストの受信、第１の装置でのメッセージングサービスメッセージの受信、または、第１の装置でのバッテリーレベルの所定レベルに対する変化、のうちの一つ以上を含むことができるが、それらに限定されない。
【００１３】
イベントの第１の標示に基づくイベントの一つまたは複数の特性が判定され得る。当該イベントの特性は、そのイベントを受信した時刻、そのイベントのカテゴリ、イベントの優先度、または、イベントの開始に関連付けられたユーザアカウントを含み得るが、それらに限定されない。いくつかの実装例では、判定されたイベントの一つまたは複数の特性は、通知を受信したクライアントコンピューティング装置の位置、型番または装置のタイプ（例えば、タブレット、携帯電話、スマートフォン等）を含むことができる。イベントの特性は、イベントのカテゴリまたはタイプ（例えば、ショートメッセージ、電話呼び出し、ビデオ呼び出し等）も含むことができる。判定された特性が少なくとも１つの選択基準に合致するかどうかが検出されてもよい。例えば、判定された特性がユーザに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの第１の装置での受信を含む場合に、選択基準が合致したとされ得る。別の例では、判定された特性がユーザに関連付けられたユーザ連絡先からの、第１の装置での不在着信を含む場合に、選択基準が合致したとされ得る。更なる別の例では、判定された特性が第１の装置での低バッテリー警告を含む場合に、選択基準が合致したとされ得る。いくつかの実装例では、判定された特性が少なくとも１つの選択基準に合致しなければ、イベントの第１の標示は、ユーザアカウントに関連付けられた第２の装置に、表示のためにブロードキャストされなくてよい。この手段によって、イベントの通知を選択的に行うことができる。
【００１４】
ユーザアカウントに関連付けられた一つまたは複数の装置から第２の装置（および任意の追加装置）を自動的に識別できる。第２の装置は、例えば、ユーザが第１の装置にログインするのに使用するユーザ名およびパスワードを含み得るユーザ信用証明をもってサインインまたはログインする装置であり得る。判定された特性に基づくイベントの第１の標示は、ユーザアカウントに関連付けられる第２の装置に提供される。第１の装置でのイベントに第２の装置から対処できるように、その提供されたイベントの第１の標示が第２の装置に（および任意の追加装置に）リアルタイムでまたはほぼリアルタイムで表示され得る。非限定的な例では、そのイベントの標示は、第２の装置にブラウザまたは他のウェブコンテンツ閲覧システムに通知として表示され得る。ユーザがその第２の装置の物理的近傍にいれば、ユーザは、その通知と対話して、第１の装置でのイベント（例えば、電話に出る、電話に出ない、文字返信、装置のオフ等）に機を逸せずに対処し得る。
【００１５】
このようにして、ユーザは、ユーザから離れている第１の装置でイベントが発生するとすぐに、そのユーザの近くにあり得る第２の装置でそのイベントの標示を視認できる。更に、そのユーザは第２の装置に表示された通知と対話することで、第１の装置に生じているイベントに対処することができる。これにより、ユーザエクスペリエンスが向上する。開示した実装例は、ユーザがそのユーザの装置から物理的に遠くにいる状況に限定されないと理解される。開示した実装例は、イベントの生じた装置とは異なるコンピュータ等の任意の装置にユーザの主要な注意が払われている場合にも有用である。たとえば、ユーザの電話機にイベントが生じたときに、その電話機がユーザのポケット内にあるかまたはその電話機の呼び出し音が無効化されていることがある。この状況で、ユーザがコンピュータ画面（例えばラップトップまたはデスクトップの画面）の前に着席していれば、そのユーザは、電話機に生じたイベントの通知をそのコンピュータ画面上で見ることができる。これにより、ユーザは、（電話機をポケットやハンドバッグから取り出すこと等によって）電話機へ注意を向ける代わりに、ユーザの電話機でのイベントによる中断にどのように取り組むかをより速やかに判断できる。この例は、例示であり、開示した実装例に対する限定を意図していない。
【００１６】
本発明の技術の居つくかの側面は、ユーザアカウントに関する情報をサーバに記憶させることを含む。サーバは、そのような情報の記憶を防止する選択肢を有する。ユーザ情報（例えば、ユーザのアカウント情報に関する情報、ユーザの好みに関する情報等）をプログラムまたは機能が収集または共有するかどうかを制御する機会がユーザに提供されてもよい。したがって、ユーザは、ユーザに関する情報がサーバによってどのように収集され使用されるかについて制御できる。
【００１７】
図１は、本発明の技術のいくつかの実装例に従う装置間相互（cross-device）通知のための例示的アーキテクチャの図である。サーバ１８０はプロセッサ１１２、メモリ１２０、記憶装置１２６、バス１２４、入力／出力モジュール１２８、入力装置１１６、出力装置１１４、および、通信モジュール１１８を含む。メモリ１２０は、イベント判定部１３２およびクライアント装置識別部１３４を含む。サーバ１８０は、出力装置（例えば、タッチスクリーンディスプレイ、非タッチスクリーンディスプレイ）、ユーザ入力を受信するための入力装置（例えば、キーボード、タッチスクリーン、またはマウス）を追加で含むことができる。いくつかの実装例では、サーバ１８０は、クライアントコンピューティング装置１９０上で実行するブラウザまたは専用アプリケーションを介したユーザ対話を容易にするための、または、図１の構成要素を含むとともに他の構成要素に格納されたデータを処理するための、一つまたは複数のモジュールを含む。サーバ１８０は、単一のプロセッサを輸する単一のマシンとして実施されてもよく、マルチプロセッサマシンでもよく、または、複数のプロセッサを有する複数のマシンを含むサーバーファームとして実装されてよい。通信モジュール１１８は、サーバ１８０がネットワーク１５０を介してクラウドメッセージングサーバ１１０、キャッシュサーバ１９６、およびクライアントコンピューティング装置１９０、１９２に対してデータを送受信できるようにする。図１には２つのクライアントコンピューティング装置が示されているが、本システムはこれらのクライアントコンピューティング装置に限定されず、例えば並列にリアルタイムに任意の数のコンピューティング装置を用いて動作および通信してもよい。
【００１８】
いくつかの実装例では、サーバ１８０は、クラウドメッセージングサーバ１１０と関連付けられることができ、ネットワーク１５０を介してクラウドメッセージングサービス１１０に対してデータを送受信できる。クラウドメッセージングサービス１１０は、サーバ１８０から受信したデータをクライアントコンピューティング装置１９０、１９２に送信し得る。クライアントコンピューティング装置１９０、１９２は、クラウドメッセージングサービス１１０を介してサーバ１８０に対してデータを送受信してよく、サーバ１８０に対してデータを直接送受信してよい。この例は例示であり、開示の実装例を限定するものではない。いくつかの実装例では、クラウドメッセージングサーバ１１０によって提供される機能がサーバ１８０に含められてよく、専用のクラウドメッセージングサーバ１１０を必要としなくてよい。いくつかの実装例に従うクラウドメッセージングサーバ１１０の動作を以下にさらに説明する。
【００１９】
いくつかの実装例では、キャッシュサーバ１９６は、限定ではないが、ビデオ、オーディオ、テキスト、画像、またはそれらの任意の組み合わせを含むがデータを格納またはキャッシュし得る。キャッシュサーバ１９６に格納されたデータは、ウェブページに、通知欄に、または他のウェブコンテンツ領域に表示するために提供されてよい。いくつかの実装例では、キャッシュサーバ１９６に格納された一部のデータは、所定の存続時間または有効期限を有することができ、その時間の経過後に、そのデータはキャッシュサーバ１９６から削除またはクリアされ得る。
【００２０】
いくつかの実装例では、サーバ１８０は、ソーシャルデータを含むソーシャルデータサーバ１９４に関連付けられることができ、サーバ１８０は、ネットワーク１５０を介してソーシャルデータサーバ１９４に対してデータを送受信することができる。いくつかの実装例では、ソーシャルデータサーバ１９４は、ソーシャルネットワーキングサービスに関連するコンテンツ（例えば投稿されたコンテンツアイテム）を格納し得る。ソーシャルデータサーバ１９４は、ユーザアカウントに関連するデータおよびユーザアカウントに関連するコンテンツアイテムを格納してもよい。例えば、ソーシャルデータサーバ１９４は、あるユーザに関連付けられたあるユーザアカウントによって閲覧されたか、共有されたか、コメントされたか、お気に入りとされたか、または、好きじゃないとされたコンテンツアイテムを示すデータを含むことができる。ソーシャルデータサーバ１９４は、ソーシャルネットワーキングサービスに関連付けられたユーザアカウント間のソーシャルコネクションを示すソーシャルコネクションデータ構造を格納することができる。ソーシャルデータサーバ１９４はまた、そのユーザによって消費されてマルチメディアサーバ１９６に格納されたマルチメディアコンテンツに対して作成されたユーザコメント（または注釈）も格納してよい。
【００２１】
いくつかの実装では、クラウドメッセージングサーバ１１０、キャッシュサーバ１９６、ソーシャルデータサーバ１９４、およびサーバ１８０は、ネットワーク１５０を介して、互いに、およびクライアントコンピューティング装置１９０、１９２と通信し得る。ネットワーク１５０は、インターネット、イントラネット、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、無線ネットワーク、または仮想プライベートネットワーク（ＶＰＮ）を含むことができる。クラウドメッセージングサーバ１１０、キャッシュサーバ１９６、ソーシャルデータサーバ１９４、およびサーバ１８０は１つだけ示されているが、本発明の技術は、任意の数のクラウドメッセージングサーバ１１０、キャッシュサーバ１９６、ソーシャルデータサーバ１９４、およびサーバ１８０と、任意の数のクライアントコンピューティング装置とで実施し得る。いくつかの非限定的な実装例では、単一のコンピューティング装置がクラウドメッセージングサーバ１１０、キャッシュサーバ１９６、ソーシャルデータサーバ１９４、およびサーバ１８０の機能を実施してもよい。
【００２２】
クライアントコンピューティング装置１９０または１９２は、ラップトップコンピュータ、デスクトップコンピュータ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、タブレットコンピュータ、ネットブック、一つまたは複数のプロセッサが埋め込まれたテレビ、物理マシン、または仮想マシンであり得る。クライアントコンピューティング装置１９０または１９２はいずれもキーボード、マウス、ディスプレイ、またはタッチスクリーンのうちの一または複数を含むことができる。クライアントコンピューティング装置１９０または１９２は、ウェブページとともにコンピューティング装置でイベントが生じていることの通知および標示を表示するように構成されたブラウザをインスタンス化し得る。実装例に従って提供される通知および他のコンテンツはブラウザの外に表示されてよいと理解されたい。
【００２３】
いくつかの実装例では、クライアントコンピューティング装置１９０、１９２は、ハードウェアメモリに実装されて一つまたは複数のプロセッサを使用して実行可能なソフトウェアを含むことができる。このソフトウェアは、クライアント装置がサーバ１８０と通信できるようにする。例えば、このソフトウェアは、サーバ１８０からのデータ（例えばメッセージおよび通知）の受信、およびサーバ１８０および図１に示す他の構成要素へのデータの送信を可能にし得る。このソフトウェアは、クライアント装置１９０、１９２に予めインストールされてもよいし、ユーザによってインストールされてもよい。このソフトウェアは、クライアントコンピューティング装置１９０、１９２がソフトウェア更新を実行するときに、クライアントコンピューティング装置１９０、１９２に自動的にインストールされてもよい。このソフトウェアは、クライアントコンピューティング装置１９０、１９２を送信機（または送り側（source））としてまたは受信機（または受け側（sink））としていつでも自動的に構成および再構成してもよい。このソフトウェアは、クライアントコンピューティング装置１９０、１９２が自動的にイベント（例えば、電話着信、受信メッセージ、低バッテリー等）を検出し、検出したイベントの標示をサーバ１８０に提供するように構成することができる。このソフトウェアは、モバイルアプリケーションマーケットまたはモバイルアプリケーションストアを介してダウンロードできるようになっていてもよい。いくつかの実装例では、ユーザアカウント識別子（例えば電子メールアドレス）または任意の他の識別子は、コンピューティング装置１９０または１９２をサーバ１８０に登録することを可能にするソフトウェアを介してユーザから受信され得る。
【００２４】
いくつかの実装例では、有効なユーザアカウント識別子およびパスワードがコンピューティング装置１９０または１９２に受信される（すなわちユーザが認証される）と、そのコンピューティング装置はそのユーザアカウントに関連付けられ得る。例えば、あるユーザがクライアントコンピューティング装置１９０、１９２の両方を所有しているかまたは両方にアクセスしている場合、そのユーザは、ユーザアカウント識別子およびパスワードをコンピューティング装置１９０、１９２のいずれか１つにインストールされたソフトウェアに提供して両方のコンピューティング装置をユーザアカウントに関連付け得る。サーバ１８０に登録したことの標示はそのソフトウェアを介して受信してもよい。このようにして、コンピューティング装置１８０はサーバ１８０と通信するために登録され得る。
【００２５】
いくつかの実装例では、クライアントコンピューティング装置のサーバ１８０への登録プロセスに非同期的障害ポイントがあることがある。言い換えれば、それらクライアントコンピューティング装置は、クライアントコンピューティング装置１９０、１９２またはサーバ１８０の接続状態に基づいて、サーバ１８０への接続および登録のために自動的に再試行（または再試行を回避）してもよい。このようにして、クライアントコンピューティング装置１９０、１９２とサーバ１８０が接続状態に維持されるようにする。いくつかの実装例では、ユーザが接続状態およびサービス（またはサービスの健全性）に関連する他のパラメータをチェックできるように、ユーザコンピューティング装置１９０、１９２にユーザインターフェースが設けられ得る。いくつかの実装例では、コンピューティング装置１９０、１９２はサーバ１８０と通信するように事前登録または事前構成されてもよく、コンピューティング装置１９０、１９２の追加の登録または構成が必要とされなくてもよいことを理解されたい。
【００２６】
上述したように、サーバ１８０のメモリ１２０は、イベント判定部１３２およびクライアント装置識別部１３４を含み得る。
いくつかの実装例では、イベント判定部１３２は、ユーザアカウントに関連付けられた第１の装置（以下、クライアント装置１９０）で検出されたイベントの第１の標示を受信し、そのイベントの第１の標示に基づいて、そのイベントの一つまたは複数の特性を判定する。いくつかの実装例では、イベント判定部１３２は、特定のタイプのイベントについて通知を生成してもよい。例えば、イベントの第１の標示がイベント判定部１３２で受信されたとき、イベント判定部１３２は、そのイベントが特定のタイプのイベント（例えば、電話呼び出し、不在着信、ある連絡先からのテキストメッセージ）であるかどうかをチェックし得る。特定のタイプのイベントは、優先のまたはタイムセンシティブなイベントであってよい。イベントが特定のタイプのイベントであると判定された場合、イベント判定部１３２は、第２の装置（以下、クライアント装置１９２）に表示するイベントの通知を識別して送信するようクライアント装置識別部１３４に示し得る。そうでなければ、いくつかの実装例では、イベントが特定のタイプのイベントではないと判定された場合、イベント判定部１３２は、イベントの通知を識別して第２の装置（以後、クライアント装置１９２）に表示することを、クライアント装置識別部１３４に示さなくてよい。このようにして、イベント判定部１３２は、イベントの特性に基づいて、クライアントコンピューティング装置に通知するための特定のイベントを選択することができる。したがって、意図された通知の視聴者は、その視聴者にとって有用であろう通知によってのみ中断されることとなろう。いくつかの実装例では、開示された実装例は、唯一であるか、唯一のソースであるか、または第１のコンピューティング装置（例えばクライアントコンピューティング装置１９０）において際立っている通知を選択的に送信し得る。このようにして、ユーザは、第２のコンピューティング装置（例えばクライアントコンピューティング装置１９２）に中継される重複通知を受信する必要はなく、その重複通知によって潜在的に煩わされることもない。いくつかの実装例では、特定のタイプのイベントを含むイベントのカテゴリはデータベース１９２に格納され得る。
【００２７】
上述したように、いくつかの実装例では、イベントの特性は、そのイベントが受信された時刻、そのイベントのカテゴリ、そのイベントの優先度、またはそのイベントの開始に関連付けられたユーザアカウントを含むことができるが、これらに限定されない。いくつかの実装例では、判定されたイベントの一つまたは複数の特性は、通知を受信したクライアントコンピューティング装置の位置、型番または装置のタイプ（例えば、タブレット、携帯電話、スマートフォン等）を含むことができる。イベントの特性は、そのイベントのカテゴリまたはタイプ（例えば、ショートメッセージ、電話呼び出し、ビデオ呼び出し等）を含んでもよい。いくつかの実装では、イベント判定部１３２は、判定された特性が少なくとも１つの選択基準と合致するかどうかを検出してよい。例えば、判定された特性がユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの第１の装置での受信を含む場合に、選択基準が合致したとされ得る。別の例では、判定された特性がユーザアカウントに関連付けられたユーザ連絡先からの、第１の装置での不在着信を含む場合に、選択基準が合致したとされ得る。更なる別の例では、判定された特性が第１の装置での低バッテリー警告を含む場合に、選択基準が合致したとされ得る。
【００２８】
クライアント装置識別部１３４は、ユーザアカウントに関連付けられた一つまたは複数の装置から第２の装置を自動的に識別し、そのイベントの第１の標示を、判定された特性に基づいて、ユーザアカウントに関連付けられたクライアント装置１９２に提供する。例えば、クライアント装置識別部１３４はネットワーク１５０に接続されたデータベース１９２を点検して、そのユーザアカウントにどの装置が関連付けられているかを判定し得る。このような装置とユーザアカウントとの関連付けは、例えばサーバ１８０への登録中にユーザアカウント情報がそのサーバによって受信されたときに、サーバ１８０によって実行されてよい。クライアント装置１９２では、クライアント装置１９０での当該イベントの管理をクライアント装置１９２からできるように、提供されたイベントの第１の標示がクライアント装置１９２に表示される。いくつかの実装例では、判定された特性が少なくとも１つの選択基準に合致しなければ、そのイベントの第１の標示は、クライアント装置識別部１３４によってユーザアカウントに関連付けられた第２の装置に、表示のためにブロードキャストされなくてよい。このようにして、開示された実装例はイベントの通知に際して選択的なものとなる。
【００２９】
図２は、クライアントコンピューティング装置１９２（例えばデスクトップまたはラップトップ）における例示的なユーザインターフェース２００を示すが、このユーザインターフェース２００には、この例ではスマートフォンであり得るコンピューティング装置１９０で検出された複数のイベントの標示（例えば通知）が表示されている。標示されたイベントの表示すなわち通知２０２は、コンピューティング装置１９０のバッテリーレベルが「低」であり、完全バッテリーレベルの「１０％」であることを示す。通知２０４は、ユーザＡからのテキストメッセージを受信したことを示す。そのテキストメッセージのコンテンツも表示される（例えば、「ねぇ、ランチに行かない？」）。通知２０６は、ユーザＡからの不在着信があったことを示す。上述したように、いくつかの実装例では、通知２０２〜２０６は、クライアントコンピューティング装置１９２と、ユーザアカウントに関連付けられた他の任意のクライアントコンピューティング装置とで、クライアントコンピューティング装置１９０で生じたイベントに対してリアルタイムでまたはほぼリアルタイムで同時に表示され得る。したがって、これらの通知は、ユーザアカウントに関連付けられた、クライアントコンピューティング装置１９２以外の装置で同時に表示され得ることを理解されたい。これにより、ユーザは、ユーザアカウントに関連する可能性のあるクライアントコンピューティング装置のどれであっても通知を便利に見ることができ、そのユーザが通知を見たり対話するのに特定の装置の近くに束縛される必要はなくなる。
【００３０】
このようにして、開示された実装例は、統一された通知、メッセージングおよびコンテンツストリームを提供し得る。さらに、通知は、オーディオ、ビデオ、またはそれらの任意の組み合わせを含んでもよい。通知との対話は、音声、タッチ、スタイラスまたは他の任意のメカニズムを介して実行されてよい。
【００３１】
図２に戻ると、後に受信されたイベントの標示が、先に受信されたイベントの標示よりも上に表示され得る。例えば、通知２０４は、通知２０６に関連するイベントの後に発生したイベントを示すことができる。この例は例示的なものであり、開示された実装例の限定することを意図しない。通知２０２〜２０６は、通知に関連付けられたユーザアカウント、通知のカテゴリ、または通知の任意の他の特性を視覚的に表示するような、画像または他のコンテンツと関連付けられてよい。例えば、通知２０６に関連する画像２０８は、ユーザＡのユーザアカウントに関連付けられた画像である。
【００３２】
いくつかの実装例では、クライアントコンピューティング装置１９０、１９２に関連付けられたユーザアカウントとは異なる別のユーザアカウントからイベントが開始されたときに画像（例えば画像２０８）を表示するために、そのイベントが発生したクライアントコンピューティング装置（例えばクライアントコンピューティング装置１９０）は、他のユーザアカウントに関連付けられた画像がそのクライアントコンピューティング装置１９０で利用可能であるかどうかを判定することができる。その画像がクライアントコンピューティング装置１９０で利用可能である場合、クライアントコンピューティング装置１９０は、その画像に対する参照を生成する。その参照は、ハッシュ値またはメッセージダイジェストであってよい。非限定的で例示的な例として、ハッシュ値は暗号ハッシュまたはセキュアハッシュアルゴリズム（ＳＨＡ）（例えばＳＨＡ−２５６）を使用して生成されてよい。生成された参照に基づいて、クライアントコンピューティング装置１９０は、その画像がリモートキャッシュサーバ１９６でも利用可能であるかどうかを判定し得る。その画像がキャッシュサーバ１９６で利用可能ではないと判定された場合、クライアントコンピューティング装置１９０は、その画像をキャッシュサーバ１９６にアップロードしてよい。
【００３３】
その画像がキャッシュサーバ１９６で利用可能であると判定された場合、クライアントコンピューティング装置１９０は、生成した参照をサーバ１８０に提供されたイベントの第１の標示に含めることができる。クライアントコンピューティング装置１９２は、サーバ１８０からの通知中のその参照を受信し、その参照先の画像がクライアントコンピューティング装置１９２でまだ利用可能ではない場合には、その参照に基づきキャッシュサーバ１９６から画像を取得し得る。いくつかの実装例では、クライアントコンピューティング装置１９０は、アプリケーションプログラミングインターフェース（ＡＰＩ）を使用して、その画像をキャッシュサーバ１９６にアップロードしてよい。その画像は、任意の画像フォーマットまたは符号化されたものであり得る（例えば、ＪＰＧ、ＰＮＧ等）。いくつかの実装例では、画像がキャッシュサーバ１９６にアップロードされると、キャッシュサーバ１９６は参照値（reference value）を生成し、その参照値をクライアントコンピューティング装置１９０に返す。この参照は、クライアントコンピューティング装置１９２を含む任意のクライアントコンピューティング装置によって、その画像を取得して表示するために使用される。
【００３４】
いくつかの実装例では、クライアントコンピューティング装置１９０、１９２は、「画像確認」機能を使用して画像がキャッシュサーバ１９６で利用可能であるかどうかを判断することができる。いくつかの実装例では、クライアントコンピューティング装置１９０、１９２は、画像取得機能を使用して、その画像のハッシュ値を提供し、それと引き換えにキャッシュサーバ１９６から画像を取得する。このようにして、クライアントコンピューティング装置１９０にイベントが発生するたびにそのクライアントコンピューティング装置１９０からサーバ１８０に（およびクライアントコンピューティング装置１９２に）に画像を送信する必要がなくなる。代わりに、画像をキャッシュサーバ１９６にアドレス指定する参照が、クライアントコンピューティング装置１９０、１９２およびサーバ１８０によって提供されてよい。その画像はその参照に基づいてキャッシュサーバ１９６から取得され得る。したがって、画像を送信するために必要とされたかもしれない追加のネットワーク帯域幅の使用を節約できる。
【００３５】
いくつかの実装例では、キャッシュサーバ１９６内の画像（および他のコンテンツ）へのアクセスを制御するために、クライアントコンピューティング装置１９０、１９２は、画像に対して固有的に生成されたキーを用いて各画像を暗号化することができる。いくつかの実装例では、その生成されたキーはクライアントコンピューティング装置１９０、１９２（またはサーバ１８０）によってセキュアメッセージングシステムを介して、画像を含む標示（例えばメッセージまたは通知）を対応するユーザに表示するであろう一つまたは複数の他の装置に送信され得る。いくつかの実装例では、サーバ１８０が画像の配送後に暗号キーを保持しないことがあるので、キャッシュサーバ１９６内の画像は暗号化されたままで安置されることができ、有効な暗号キーを所有していない権限のないユーザやシステムオペレータによって読み取られることはない。いくつかの実装例では、固有的画像暗号キーは、画像それ自体のハッシュから生成さえ得る。これは、所与の画像（例えばユーザのプロフィール画像）が、キャッシュサーバ１９６に一旦格納されるとその所与の画像を参照する他のすべての通知でその所与の画像を共有できるようになる。しかしながら、その画像暗号キーを有するであろうクライアントコンピューティング装置１９０、１９２は、ユーザへの表示用にその画像を復号できる。
【００３６】
暗号学においてキー付きハッシュメッセージ認証コード（ＨＭＡＣ）は、秘密暗号キーと組み合わせて暗号ハッシュ関数を含むメッセージ認証コード（ＭＡＣ）を演算するための構築物（ｃｏｎｓｔｒｕｃｔ）となり得る。ソルト（ｓａｌｔ）値は、パスワードまたはパスフレーズをハッシュする関数への追加入力として使用されるランダムなデータであり得る。
Ｉｍａｇｅ＿ｉｎｄｅｘ＝ＨＭＡＣ（ｉｎｄｅｘ＿ｓａｌｔ，ｉｍａｇｅ）    …（１）
ｌｍａｇｅ＿ｋｅｙ＝ＨＭＡＣ（ｋｅｙ＿ｓａｌｔ，ｉｍａｇｅ）    …（２）
Ｃａｃｈｅｄ＿ｉｍａｇｅ＝Ｅｎｃｏｄｅ（ｉｍａｇｅ＿ｋｅｙ，ｉｍａｇｅ）    …（３）
上記例示の関数（１）を参照すると、ｉｍａｇｅ＿ｉｎｄｅｘは、ＨＭＡＣ（ｋｅｙ＿ｓａｌｔ，ｉｍａｇｅ）として演算され、ここで、「ｉｍａｇｅ」は、画像データであり、ｉｎｄｅｘ＿ｓａｌｔはソルト値である。関数（２）を参照すると、ｉｍａｇｅ＿ｋｅｙはＨＭＡＣ（ｋｅｙ＿ｓａｌｔ，ｉｍａｇｅ）として演算され、ここで「ｉｍａｇｅ」は画像データであり、ｋｅｙ＿ｓａｌｔはソルト値である。ｉｍａｇｅ＿ｉｎｄｅｘとｉｍａｇｅ＿ｋｅｙは、サーバ１８０から認証済みのクライアント装置（例えばクライアントコンピューティング装置１９０、１９２）への各標示（例えば通知メッセージ）において送信されることができ、それら認証済みのクライアント装置が、対応するキャッシュされた画像を取得して復号できるようになる。キャッシュされた画像は、ｉｍａｇｅ＿ｉｎｄｅｘをアクセスキーとして用いてキャッシュサーバ１９６に格納しキャッシュサーバ１９６から取得され得る。
【００３７】
いくつかの実装例では、各キャッシュされた画像は、イベントの第１の標示とともに第２の装置（例えばクライアントコンピューティング装置１９２）に送信される前に、第１の装置（例えばクライアントコンピューティング装置１９０）で生成された固有キーで暗号化され得る。いくつかの実装例では、各キャッシュされた画像は、クライアントコンピューティング装置１９０で生成されてクライアントコンピューティング装置１９２に送信されるコンテンツベースキー（content-based key）に関連付けられる。コンテンツベースキー（例えば画像のハッシュ）の利点は、各（暗号化）画像がキャッシュサーバ１９６に一度だけ格納されるだけでよいことである。というのは、その画像を復号するのに固有キーは必要とされないであろうからである。いくつかの実装例では、イベントの標示を有するＴＴＬ（time-to-live）値が含められることがあり、このＴＴＬ値は第１の標示の（または任意の他の標示または通知メッセージの）有効期限を示すものである。いくつかの実装例では、ＴＴＬ値は、イベントの標示に添付または埋め込まれたカウンタまたはタイムスタンプとして実装され得る。所定のイベントカウントまたはタイムスパンが徒過すると、そのイベントの標示は破棄されてよい。このようにして、ＴＴＬ値の使用により、有効期限前に送達されないかもしれない順番待ちのイベントの標示を除去することによって、開示した実装例は最適化され得る。
【００３８】
図３Ａは、クライアントコンピューティング装置１９０がスマートフォンで、クライアントコンピューティング装置１９２がラップトップコンピュータである場合の例を示す。図３Ａにおいて、クライアントコンピューティング装置１９０に関連付けられた通知はまだ表示されていない。図３Ｂは、クライアントコンピューティング装置１９０にユーザＢからの電話呼び出しがかかっている状況を示す。この電話呼び出しがかかると、クライアントコンピューティング装置１９２に通知３１０が表示される。この通知は発呼側すなわちユーザＢの画像を含むことができる。一例では、通知がクライアントコンピューティング装置１９０に生じた電話着信イベントの電話着信通知であり、その通知は、クライアントコンピューティング装置１９０の呼び出し音が鳴っているかバイブレーションしているかあるいはサイレントモードであるかに関わらず、その電話着信とリアルタイムにクライアントコンピューティング装置１９２に表示され得る。この通知は、その電話呼び出しの発信元の番号に関連付けられた発呼側識別情報（または名称）および通知の説明（例えば「あなたの電話機が鳴っています」）を表示してよい。
【００３９】
図３Ｃおよび図３Ｄは、クライアントコンピューティング装置１９０が電話着信状態のままであり、クライアントコンピューティング装置１９２でのユーザは、その電話の受信中または着信中にいつその電話に出るかを選ぶであろう。加えて、コンピューティング装置１９２でユーザがその電話を却下したりその電話に出られるように、電話に出ないボタンおよび電話に出るボタンも表示され得る。
【００４０】
このように、デスクトップまたはラップトップコンピュータを使用しているユーザが、電話着信の通知をリアルタイムで視認し対話することができる。この通知は、クライアントコンピューティング装置１９２で実行されているブラウザに表示されてよい。ユーザがクライアントコンピューティング装置１９２でその電話に出ると、クライアントコンピューティング装置１９０は呼び出し音やバイブレーションを止め、ユーザは（クライアントコンピューティング装置１９２に関連付けられたマイクロフォンおよびスピーカを用いて）発呼者と会話することとなろう。開示された実装例は地理的距離によって制限されない。たとえば、ユーザがニューヨークにあるユーザの机にいるときに、北京にあるユーザ電話機が電話呼び出しを受信することがある。このユーザはニューヨークにいるけれども、北京にある電話機にかかってきた電話呼び出しにリアルタイムに応じることができる。この例は例示であり、開示された実装例を限定することを意図していない。
【００４１】
いくつかの実装例では、ユーザが電話に出ると、メッセージングサービスを介して表示され得るユーザ状態識別子は、そのユーザが例えばユーザＢと音声電話中であることを示すように変更されてよい。そのユーザは、前記通知に表示され得る「ハングアップ」要素または電話終了ユーザ要素を選択してその電話を終了し得る。ユーザがその電話に出ないことを選択した場合には、図３Ｅに示すように、その電話呼び出しが止まり未応答のままになった後に、「あなたの電話機が鳴っています」という通知は自動的に「電話に出ませんでした」に変化する。どのような通知の変化および却下であっても、ユーザのアカウントに関連付けられたすべての装置に瞬時に伝搬される。このようにして、ユーザのアカウントに関連付けられたすべてのクライアントコンピューティング装置が同期状態に維持され得る。
【００４２】
いくつかの実装例では、電話呼び出しに関連する音声データがクライアントコンピューティング装置１９０からサーバ１８０を介してクライアントコンピューティング装置１９２に中継されてよい。他の実装例では、その音声データは、クライアントコンピューティング装置１９０をバイパスしてよく、発呼側装置から直接サーバ１８０を介してクライアントコンピューティング装置１９２に中継されてよい。他の任意の形式のデータ中継または送信を使用してよい。ユーザがクライアントコンピューティング装置１９０または１９２を使用しているかどうかを発呼者が知る必要も心配する必要もない。このように、本開示の実施形態は、発呼者と被呼者の両方の視点で、シームレスでリアルタイムのエクスペリエンスを提供する。ユーザが電話に出ないかまたはその電話を却下した場合には、不在着信通知（例えば通知２０６）がクライアントコンピューティング装置１９２に表示されてよい。さらに、通知２０２〜２０６は、クライアントコンピューティング装置１９０，１９２にも関連づけられているユーザアカウントに関連づけられている他の装置に、クライアントコンピューティング装置１９０、１９２と共に、同時にリアルタイムに（またはほぼリアルタイムに）表示されてよい。
【００４３】
通知がクライアントコンピューティング装置１９０で受信されたメッセージングサービスメッセージ（例えばショートメッセージングサービスメッセージすなわちＳＭＳ）の通知である一例では、その通知は、そのメッセージを受信すると即座にクライアントコンピューティング装置１９２に表示され得る。そのクライアントコンピューティング装置１９０は着信音可能でも、バイブレーションまたは静音モードであってもよい。この通知は、そのメッセージの発信側の、番号またはアカウントに関連する発呼者識別子（または名前）を表示してもよい（例えば画像２０８）。このようにして、そのメッセージの通知（例えば通知２０４）を、デスクトップまたはラップトップコンピュータを使用しているユーザがリアルタイムまたはほぼリアルタイムで視認し得る。この通知は、クライアントコンピューティング装置１９２で実行中のブラウザに表示され得る。図４Ａに示すように、通知４０２は、ブラウザの外部で、かつ、クライアントコンピューティング装置１９２のデスクトップ領域に表示されてよい。図３Ｆには、クライアントコンピューティング装置１９２のデスクトップ領域に通知が表示される別の状況を示す。このデスクトップ領域は、クライアントコンピューティング装置１９２で実行中の他の表示されるアプリケーションとは独立した領域であり得る。
【００４４】
図４Ｂは、通知４１４および４０６を含む通知インターフェース４２０を示す。通知４０６は、現在の気象状態を示す通知である。この気象状態は、クライアント装置１９０またはクライアント装置１９２の地理的位置に関連付けられてよい。この地理的位置は様々であり得る（例えば、ある家の異なる部屋、異なる都市、国または大陸等）。ユーザは、クライアントコンピューティング装置１９２で通知と対話して、ユーザＡのメッセージングサービスメッセージ（たとえば、「ねぇ、ランチに行かない？」）に対し、返信要素４１０または「私は忙しい」要素４１２によって応じてよい。非限定的な例として、要素４１２を選択することは、ユーザが現在忙しくて応答できないといった事前設定済みの返事を、メッセージの送信者に提供してよい。ユーザは、個々の通知に関連付けられた要素４１４を閉じることまたは却下することを選択することによって、任意の通知を却下することができる。いくつかの実装例では、ユーザがある通知を却下すると、そのユーザのアカウントに関連付けられた他のコンピューティング装置に表示されているであろう当該通知の他のインスタンスも同時に却下される。ユーザが返信要素４１２を選択すると、インターフェース４１６がクライアントコンピューティング装置１９２でインスタンス化される。いくつかの実装例では、ユーザインターフェース４１６は、直近のメッセージに加えてそのメッセージの送信者から受信した一つまたは複数の過去のメッセージを表示してよい。これにより、クライアントコンピューティング装置１９２のユーザに、最新のメッセージに適切に応答するのに当該ユーザによって使用されるかもしれない前後関係が提供される。
【００４５】
いくつかの実装例では、クライアントコンピューティング装置１９２のユーザはインターフェース４１６を使用して任意の数のメッセージの送信および視認してよく、そのインターフェース４１６をいつでも閉じるか終了することができる。インターフェース４１８は、インターフェース４１６と似た別のインターフェースであり、ユーザがクライアントコンピューティング装置１９２でメッセージを送信および受信できるようにする。図４Ｃは他の通知インターフェース４２４を示す。図４Ｃを参照すると、通知はクライアントコンピューティング装置１９０（例えばスマートフォン）の位置を示す通知も含み得る。
【００４６】
開示された実装例はショートメッセージングサービスメッセージに限定されず、任意の他の形式のメッセージングシステム、方法またはフレームワークを使用できると理解される。いくつかの実装例では、クライアントコンピューティング装置１９２でクライアントコンピューティング装置１９０から受信した通知は、有効期限またはＴＴＬ値（余命値）と関連されてよく、例えば、そのＴＴＬ値が１時間であると、そのメッセージがクライアントコンピューティング装置１９２で受信および標示されてから１時間後に、そのメッセージは画面表示から見えなくされるか削除されてよい。この例は例示であり、開示の実装例の限定を意図していない。
【００４７】
いくつかの実装例では、インターフェース４１６（または４１８）は、メッセージがクライアントコンピューティング装置１９０で受信されると、クライアントコンピューティング装置１９２に自動的にインスタンス化されて表示される。別の実装例では、クライアントコンピューティング装置１９２でのユーザ対話（またはメッセージを送信したことの標示）があると、インターフェース４１６（または４１８）は、クライアントコンピューティング装置１９２に自動的にインスタンス化されて表示される。いくつかの実装例では、クライアントコンピューティング装置１９２は多数のメッセージングインターフェースを自動的に管理し、所定の時間期間にわたって活動状態にないメッセージングインターフェースがクライアントコンピューティング装置１９２によって自動的に最小化されてよい。このようにして、多数のメッセージングインターフェースの混み合った状況にユーザが煩わされなくなる。いくつかの実装例では、アイコン類を含むインターフェース４１６や４１８の視覚的スタイルは、コンピューティング装置１９２の視覚的インターフェースまたはスタイルテーマに基づき自動的に決定されてよく、サーバ１８０によって決定されてよく、あるいは、コンピューティング装置１９２のユーザによって設定されてもよい。
【００４８】
いくつかの実装例では、いくつかの状況ではインターフェース４１６を介して提供されるメッセージがサードパーティのメッセージング料金の課金対象となり得るという標示が、インターフェース４１６を介してユーザに表示されてよい。いくつかの実装例では、インターフェース４１６は、クライアントコンピューティング装置１９２で実行されているサービスのクライアントソフトウェアを介してアクセス可能なクラウドベースの通信サービスに関連付けられてよい。このクラウドベースの通信サービスは、多数のユーザ間でのビデオ会議、音声会議、音声会議およびテキスト会議を含む、２以上のユーザ間でのビデオ、オーディオ、および、テキスト通信を可能にする。いくつかの実装例では、クラウドメッセージングサービスのインターフェースを介してクライアントコンピューティング装置で送信または受信される通信は、インターフェース４１６または４１８とは異なる表示ビジュアルスタイルを有してよい。
【００４９】
通知がクライアントコンピューティング装置１９０のバッテリーレベルに関連付けられている例では、その通知は、リアルタイムでまたはほぼリアルタイムでクライアントコンピューティング装置１９２に表示される。例えば、クライアントコンピューティング装置１９０の（またはクライアントコンピューティング装置１９２のものと同じユーザアカウントに関連付けられた任意の他の装置の）バッテリーレベルが所定の閾値（例えば完全バッテリーレベルの１０％）より下に低下すると、クライアントコンピューティング装置１９０がこのイベントを検出してこのイベントの標示をサーバ１８０に送信する。するとサーバ１８０はその標示を、クライアントコンピューティング装置１９２での表示のために送信する。するとそのクライアントコンピューティング装置１９２でのユーザは、その通知と対話してそのイベントを管理するための行動をとることができる。例えば、ユーザは、その表示された通知を介して入力を提供することによって、クライアントコンピューティング装置１９０を電源オフまたは出力低下させることを示すことができる。その行動がサーバ１８０を介してクライアントコンピューティング装置１９０で受信すると、このクライアントコンピューティング装置は、自動的に電源オフになるか出力低下する。いくつかの実装例では、ユーザは、クライアントコンピューティング装置１９０に表示された一つまたは複数の通知をクリアまたは却下することを示してもよい。
【００５０】
図５は、クライアントコンピューティング装置１９０〜１９４、サーバ１８０および位度メッセージングサーバー１１０間でのメッセージングフローの例を示す。クライアントコンピューティング装置１９０〜１９４は、同じユーザアカウントに関連付けられ得る。クライアントコンピューティング装置１９０はスマートフォン、タブレットまたは任意の携帯機貴であってよく、クライアントコンピューティング装置１９２および１９４はデスクトップコンピュータかラップトップであってよい。
【００５１】
ステージ５０２において、イベントがクライアントコンピューティング装置１９０で起こり検出される。ステージ５０４では、そのクライアントコンピューティング装置１９０がそのイベントの標示（または通知）をサーバ１８０に送る。すると、サーバ１８０は、同じユーザアカウントに関連付けられている他のコンピューティング装置を判定する。特に、サーバ１８０は、クライアントコンピューティング装置１９０に加えてクライアントコンピューティング装置１９２、１９４が同じユーザアカウントに関連付けられていることを判定する。クライアントコンピューティング装置１９２、１９４が、イベント通知の受信機または受け側（ｓｉｎｋｓ）でありかつ送り側（ｓｏｕｒｃｅ）または送信機であるクライアントコンピューティング装置１９０から分離したものであると判定されてよい。
【００５２】
ステージ５０６では、サーバ１８０はその通知をクライアントコンピューティング装置１９２、１９４のソフトウェアクライアント（例えばブラウザ）にブロードキャストするかまたは同時に供給し得る。ステージ５０８では、サーバ１８０からブロードキャストされた通知はクラウドメッセージングサーバ１１０によってクライアントコンピューティング装置１９２、１９４のソフトウェアクライアントに中継され得る。ステージ５１０では、その通知はクライアントコンピューティング装置１９２、１９４に同時にリアルタイムに表示され得る。ステージ５１２では、クライアントコンピューティング装置１９２において、行動を含む対話が表示された通知を介して受信され得る。ステージ５１４では、その行動を含む標示がサーバ１８０に供給され得る。ステージ５１６では、サーバ１８０は、クラウドメッセージングサーバ１１０を介して全てのクライアントコンピューティング装置１９０、１９２、１９４に行動をブロードキャストし得る。ステージ５１８では、クラウドメッセージングサーバ１１０はその行動を、受信側であるクライアントコンピューティング装置１９２、１９４にも、初期決定された送り側であるクライアントコンピューティング装置１９０にも提供または送信し得る。
【００５３】
いくつかの実装例では、一つまたは複数のサービスメッセージが図１に示した一つまたは複数の構成要素間でやり取りされ得る。いくつかの実装例では、登録メッセージがクライアントコンピューティング装置１９０または１９２によってサーバ１８０に提供される。この登録メッセージは、ユーザがクライアントコンピューティング装置１９０または１９２の認証インターフェースを介してユーザ名または電子メールアドレスとパスワードを提供してサーバ１８０によって提供される通知およびメッセージングサービスに登録する意思を確認すると、提供されるものであり得る。いくつかの実装例では、ユーザがクライアントコンピューティング装置１９０または１９２でユーザインターフェースを介して当該ユーザがサーバからのサービスの中止を望むことを示す場合に、クライアントコンピューティング装置１９０または１９２によって登録解除（un-register）メッセージが提供され得る。
【００５４】
いくつかの実装例では、クライアントコンピューティング装置１９０または１９２は、サーバ１８０との接続をテストするために、ＰＩＮＧメッセージがサーバ１８０から要求元のクライアントコンピューティング装置１９０または１９２に戻されるように要求することができる。いくつかの実装例では、クライアントコンピューティング装置１９０または１９２からの要求に応答して、サーバ１８０は、特定のユーザアカウントに関連付けられたクライアントコンピューティング装置のリストを送信することができる。このリストは、当該リストに掲載されているあるクライアントが送り側なのか受け側なのかも示し得る。上述したように、通知は、あるクライアントで生成されてよく、その後、特定のユーザアカウントに関連付けられている受信機または受け側である他のクライアントコンピューティング装置に向けてサーバ１８０によってブロードキャストされることができる。ユーザが通知と対話してコンピューティング装置のいずれか一つからイベントを管理するためにとるべき行動を示すと、行動メッセージ（action message）が、クライアントコンピューティング装置１９０または１９２からサーバ１８０に送信され得る。
【００５５】
いくつかの実装例では、行動メッセージは行動の識別子を含み得る。いくつかの実装例では行動メッセージが、捌くべきイベントが生じているクライアントコンピューティング装置に向けてサーバ１８０によって送信されると、そのクライアントコンピューティング装置は、自動的に、行動識別子に基づき取るべき行動を判定し、その行動を進める。例えば、電話呼び出しが当該クライアントコンピューティング装置で却下され得る。いくつかの実装例では、サーバ１８０および他の構成要素は、メッセージプロパティとは独立してメッセージを処理し得る。言い換えると、そして例えば、サーバ１８０がメッセージプロパティを不透明（opaque）なものとして処理し得る。このようにしいて、クライアントコンピューティング装置１９０、１９２にインストールされたものであり得るクライアントソフトウェアをアップデートすることによって、追加の特徴（例えば通知と行動）を配備することができ、サーバ１８０での変更は不要となり得る。ある実装例では、上述したサービスメッセージおよび任意の他のメッセージおよび通知（またはイベントの標示）は、トランスミッションコントロールプロトコルすなわちＴＣＰを利用して送信されてよい。ＴＣＰは、インターネットプロトコル（ＩＰ）スイートに関連付けられたプロトコルである。ＴＣＰは、概してそして例えば、ウェブブラウザとウェブサーバを含むエンドシステム間で動作し得るが、それらに限定されない。ＴＣＰは、あるコンピュータから別のコンピュータにソフトウェアプログラムからのバイトストリーム（a stream of bytes）の配送を可能にする。ＴＣＰは例示であり開示の実装例を限定することを意図していない。ＨＴＴＰとしても知られるハイパーテキストトランスファープロトコルや高安全性ＨＴＴＰを含む任意の他のプロトコルと使用してよい。
【００５６】
いくつかの実装例では、上述したサービスメッセージ任意の他のメッセージおよび通知は、例えば、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）フォーマットを使用して、図１に示した構成要素間で送信され得る。ＪＳＯＮ等のフォーマットの使用は、人間が読めるＪＳＯＮフォーマットの結果としてのデバッグの容易さだけでなく、それら構成要素でのメッセージの効率的な符号化および構文解析を可能にする。更に、サードパーティのサービスが図１に示した構成要素と相互作用する場合には、それらも適切な形式にされた通知、サービスメッセージおよびコンテンツを提供すべくＪＳＯＮを使用してよく、ＪＳＯＮフォーマットで受信した行動および応答を構文解析可能であってよい。ＪＳＯＮフォーマットの使用は単に例示であり開示の実装例の限定を意図していないと理解される。図１の構成要素によっておよびそれら構成要素に関連付けられる任意の他のサービスおよびシステムによって他のフォーマットが使用されてよい。
【００５７】
開示された発明は、装置間相互通知に関する。いくつかの実装例は、ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示を受信し、前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、その判定した特性が少なくとも１つの選択基準に合致するかどうかを検出し、前記ユーザアカウントに関連付けられた一つまたは複数の装置から第２の装置を自動的に識別し、前記判定した特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記第２の装置に提供する。ここで、前記第１の装置での前記イベントを前記第２の装置から管理できるように、その提供された前記イベントの前記第１の標示が前記第２の装置に表示される。いくつかの実装例は、前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記第２の装置に表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、前記行動を前記第１の装置に送信する。ここで、前記イベントは前記第１の装置で前記行動に基づき管理される。
【００５８】
いくつかの実装例は、イベントの前記第１の標示に関連付けられた第１のコンテンツを受信し、その受信した第１のコンテンツを、前記イベントの前記第１の標示とともに表示させるために、前記ユーザアカウントに関連付けられた前記第２の装置に提供する。いくつかの実装例は、前記コンテンツがリモートキャッシュ内の画像への参照を含む場合、その参照を前記第２の装置に提供し、ここで、第２の装置は、前記画像が当該第２の装置で利用可能でなければ、前記参照に基づき前記キャッシュから前記画像を表示のために取得する。いくつかの実装例は、前記第２の装置に表示された前記イベントの前記第１の標示に応答して第２のコンテンツを受信し、受信した第２のコンテンツを前記第１の装置に表示のために供給する。いくつかの実装例は、前記イベントの前記第１の標示は前記第２の装置のウェブブラウザに表示され、前記第１の装置はモバイルコンピューティング装置であり、前記第２の装置はデスクトップコンピューティング装置である。いくつかの実装例では、前記イベントは、第１の装置での音声呼リクエストの受信、第１の装置でのメッセージングサービスメッセージの受信、または、第１の装置でのバッテリーレベルの所定レベルに対する変化、のうちの一つ以上を含むことができる。いくつかの実装例では、前記イベントの一つまたは複数の特性は、そのイベントを受信できた時刻、そのイベントのタイプ、そのイベントの優先度、または、そのイベントの開始に関連付けられたユーザアカウントを含む。いくつかの実装例では、前記第１の装置は第１の地理的位置にあり、前記第２の装置は第２の地理的位置にある。
【００５９】
いくつかの実装例では、判定された特性が前記少なくとも１つの選択基準に合致しなければ、前記イベントの前記第１の標示は、判定された前記特性に基づき、前記ユーザアカウントに関連付けられた第２の装置に、表示のためにブロードキャストされなくてよい。いくつかの実装例では、判定された前記特性が前記第１の装置での低バッテリー警告を含む場合に前記選択基準が合致したとされ得る。いくつかの実装例では、判定された前記特性が前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに前記選択基準に合致したとされ得る。いくつかの実装例では、判定された前記特性が、前記ユーザアカウントに関連付けられたユーザ連絡先からの不在着信を含むときに前記選択基準に合致したとされ得る。いくつかの実装例では、判定された前記特性が前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに前記選択基準に合致したとされ得る。
【００６０】
いくつかの実装例は、ユーザアカウントに関連付けられた第１の装置でイベントを検出し、前記イベントの第１の標示をサーバに提供し、検出された前記イベントの特性が少なくとも１つの基準に合致した場合に前記サーバが前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた第２の装置に提供し、前記第１の装置で検出された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記第２の装置に表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、前記イベントを前記第１の装置で前記行動に基づき管理することを備える。いくつかの実装例は、イベントの第１の標示に関連付けられた第１のコンテンツを受信し、その受信した第１のコンテンツをサーバに提供することを含み、ここで、サーバは、そのコンテンツを、前記イベントの前記第１の標示とともに表示させるために、前記ユーザアカウントに関連付けられた前記第２の装置に提供する。
【００６１】
いくつかの実装例は、前記イベントが別のユーザアカウントから開始された場合には、その別のユーザアカウントに関連付けられた画像が前記第１の装置で利用可能であるかどうかを判定し、前記画像が前記第１の装置で利用可能であれば、前記画像への参照を生成し、その生成した参照に基づき、前記画像がリモートキャッシュで利用可能であるかどうかを判定し、前記画像が前記リモートキャッシュで利用可能でなければ、前記画像を前記リモートキャッシュにアップロードし、前記画像が前記リモートキャッシュで利用可能であると判定された場合には、前記サーバに提供した前記イベントの前記第１の標示に、生成した前記参照を含めることを含む。ここで、前記第２の装置は当該参照に基づき前記リモートキャッシュから前記画像を取得する。
【００６２】
いくつかの実装例では、各キャッシュされた画像は、前記イベントの前記第１の標示とともに前記第２の装置に送信される前に、前記第１の装置で生成された固有キーで暗号化され得る。いくつかの実装例では、各キャッシュされた画像は、コンテンツベースキーで暗号化される。このコンテンツベースキーは、前記第１の装置で生成されて前記第２の装置に送信され得る。いくつかの実装例では、ＴＴＬ値（余命値）が前記イベントの前記第１の標示で示される。ここで、このＴＴＬ値は第１の標示の有効期限を示すものである。
【００６３】
いくつかの実装例では、前記画像が前記第２の装置で利用可能ではないかもしれない場合には、前記第２の装置は前記参照に基づき前記リモートキャッシュから前記画像を取得する。その参照は、前記画像に基づくハッシュ値であり得る。いくつかの実装例は、前記第２の装置に表示された前記イベントの前記第１の標示に応答して第２のコンテンツを受信し、受信した第２のコンテンツを前記第１の装置に表示する。前記イベントは、前記第１の装置での音声呼リクエストの受信、前記第１の装置でのメッセージングサービスメッセージの受信、または、前記第１の装置でのバッテリーレベルの所定レベルに対する変化、のうちの一つ以上を含んでよい。前記イベントの特性は、そのイベントを受信した時刻、そのイベントのタイプ、そのイベントの優先度、または、そのイベントの開始に関連付けられたユーザアカウントを含む。前記第１の装置は第１の地理的位置に存在することができ、前記第２の装置は第２の地理的位置に存在することができる。いくつかの実装例では、前記判定された特性が前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに前記選択基準に合致したとされ得る。前記判定された特性が、前記ユーザアカウントに関連付けられたユーザ連絡先からの不在着信を含むときに前記選択基準に合致したとされ得る。判定された特性が前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに前記選択基準に合致したとされ得る。これらの例は開示した実装例を限定することを意図していない。いくつかの実装例では、判定された前記特性が前記少なくとも１つの選択基準に合致しなければ、前記イベントの前記第１の標示は、判定された前記特性に基づき、前記ユーザアカウントに関連付けられた前記第２の装置に、表示のためにブロードキャストされなくてよい。
【００６４】
いくつかの実装例は、ユーザアカウントに関連付けられた第１の装置で検出されたイベントを示す第１の標示を受信し、前記イベントの前記第１の標示に基づき前記イベントの一つまたは複数の特性を判定し、その判定した特性が少なくとも１つの選択基準に合致するかどうかを検出し、前記ユーザアカウントに関連付けられた一つまたは複数の装置を自動的に識別し、前記判定した特性が前記少なくとも１つの選択基準に合致した場合には、前記イベントの前記第１の標示を前記ユーザアカウントに関連付けられた前記一つまたは複数の装置にブロードキャストする。提供された前記イベントの前記第１の標示は前記一つまたは複数の装置に同時にリアルタイムで表示されて、前記第１の装置での前記イベントが前記一つまたは複数の第２の装置のいずれからでも管理できるようになる。いくつかの実装例は、前記第１の装置で受信された前記イベントに対して実行されるべき行動を含む第２の標示であって、前記一つまたは複数の装置のうちのいずれかに表示された前記イベントの前記第１の標示との対話があると生成される前記第２の標示を受信し、前記行動を前記第１の装置に送信することができ、前記イベントは前記第１の装置で前記行動に基づき管理され得る。
【００６５】
いくつかの実装例は、前記行動が前記第１の装置で受信した前記イベントに対する通知を却下した場合、前記行動を前記第１の装置と、前記ユーザアカウントに関連付けられた一つまたは複数の他の装置とにブロードキャストしてよく、ここで、前記通知は、前記第１の装置および前記一つまたは複数の他の装置で却下される。前記第１の装置は第１の地理的位置に存在することができ、前記第２の装置は第２の地理的位置に存在することができる。いくつかの実装例では、前記判定された特性が前記ユーザアカウントに関連付けられたユーザ連絡先からのメッセージングサービスメッセージの受領を含むときに前記選択基準に合致したとされ得る。前記判定された特性が、前記ユーザアカウントに関連付けられたユーザ連絡先からの不在着信を含むときに前記選択基準に合致したとされ得る。
【００６６】
いくつかの実装例では、判定された特性が前記少なくとも１つの選択基準に合致しなければ、前記イベントの前記第１の標示は、判定された前記特性に基づき、前記ユーザアカウントに関連付けられた第２の装置に、表示のためにブロードキャストされなくてよい。いくつかの実装例は、前記ユーザアカウントに関連付けられた前記第１の装置で検出された前記イベントの前記第１の標示が、以前に受信した一つまたは複数の標示と重複したものであるかを判定し得る。前記イベントの前記第１の標示が以前に受信した一つまたは複数の標示と重複したものではないと判定された場合には、前記イベントの前記第１の標示を、前記第２の装置と、前記ユーザアカウントに関連付けられた一つまたは複数の他の装置とにブロードキャストし、前記イベントの前記第１の標示が以前に受信した一つまたは複数の標示と重複したものであると判定された場合には、いくつかの実装例は、前記第２の装置および前記ユーザアカウントに関連付けられた前記一つまたは複数の他の装置への前記イベントの前記第１の標示のブロードキャストを禁止してよい。
【００６７】
図１に戻ると、特定の態様では、サーバ１８０は、ハードウェアを用いてまたはソフトウェアとハードウェアの組み合わせを用いて、専用のサーバとして、あるいは他の実体物に組み込まれたものとして、あるいは複数の実体物にまたがって分散されたものとして実施してよい。
【００６８】
サーバ１８０は、バス１２４または情報通信用の他の通信機構を含み、プロセッサ１１２は情報処理するためにバス１２４に結合される。プロセッサ１１２は、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路（ＰＬＤ）、コントローラ、ステートマシン、ゲートロジック、複数のディスクリートハードウェアコンポーネント、または情報の計算または他の操作を実行可能な任意の他の適切な実体物であってよい。
【００６９】
サーバ１８０は、ハードウェアに加えて、当該コンピュータプログラムの実行環境を作成するコードを含むことができ、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはメモリ１２０に格納されたそれらの１つまたは複数の組み合わせ、を構成するコードを含むことができる。メモリ１２０は、情報およびプロセッサ１１２によって実行される命令を記憶するためにバス１２４に結合された、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ、または任意の他の適切な記憶装置を含んでよい。プロセッサ１１２およびメモリ１２０は、専用論理回路によって補われることができ、専用論理回路に組み込まれることができる。
【００７０】
前記命令は、メモリ１２０に格納されてよく、また、当業者にとって知られている任意の方法に従って、例えば、サーバ１８０によって実行されるためのまたはサーバ１８０の動作を制御するためのコンピュータ読み取り可能媒体に符号化された複数のコンピュータプログラム命令からなる一つまたは複数のモジュールといった、一つまたは複数のコンピュータプログラム製品に実装されてもよい。なお、当業者にとって知られている任意の方法は、限定ではないが、データ指向言語（例えば、ＳＱＬ，ｄＢａｓｅ）、スステム言語（例えばＯｂｊｅｃｔｉｖｅ−Ｃ、Ｃ  ＋＋、アセンブリ）、アーキテクチャ言語（例えばＪａｖａ（登録商標）、．ＮＥＴ）、アプリケーション言語（例えば、ＰＨＰ、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ）等のコンピュータ言語を含む。命令は、配列言語、アスペクト指向言語、アセンブリ言語、オーサリング言語、コマンドラインインタフェース言語、コンパイル言語、並行言語、中括弧言語（ｃｕｒｌｙ  ｂｒａｃｋｅｔ）、データフロー言語、データ構造化言語、宣言言語、難解（ｅｓｏｔｅｒｉｃ）言語、拡張言語、第４世代言語、機能的言語、インタラクティブモード言語、インタプリタ型言語、反復（ｉｔｅｒａｔｉｖｅ）言語、リストベース言語、小言語、ロジックベース言語、機械語、マクロ言語、メタプログラミング言語、マルチパラダイム言語、数値解析の非英語ベース言語、オブジェクト指向のクラスベース言語、オブジェクト指向のプロトタイプベース言語、オフサイドルール言語、手続き言語、反射言語、ルールベース言語、スクリプト言語、スタックベース言語、同期言語、構文処理言語、ビジュアル言語、ヴィルト言語、埋め込み可能言語、およびＸＭＬベース言語等のコンピュータ言語として実装されてもよい。メモリ１２０は、プロセッサ１１２によって実行されるべき命令の実行中に、一時的情報、変数情報、または他の中間情報を格納するために使用されてもよい。
【００７１】
本明細書で述べたようなコンピュータプログラムは必ずしもファイルシステムにおけるファイルに対応するものではない。プログラムは、他のブログラムやデータ（例えば、マークアップ言語書類に格納された一つまたは複数のスクリプト等）を所持する位置ファイルの一部に格納されてよく、当該プログラムに対して割り当てられた単一ファイルに格納されてよく、組織化された複数のファイル（例えば、複数のファイルが一つまたは複数の、モジュール、サブプログラム、またはコード部分に格納）に格納されてよい。コンピュータプログラムは、一つのコンピュータ上で実行されるべく展開されてよく、あるいは、通信ネットワークによって相互接続された複数のコンピュータであって、一箇所に配置されるかまたは複数の場所にまたがって分散される複数のコンピュータ上で実行されるべく展開されてよい。本明細書で説明したプロセスと論理フローは、入力データを操作して出力組成性することによって機能を実行すべく一つまたは複数のコンピュータプログラムを実行する一つまたは複数のプログラム可能プロセッサによって実行されることができる。
【００７２】
サーバ１８０は、情報および命令を記憶するためにバス１２４に結合された、磁気ディスクまたは光学ディスク等のデータ記憶装置１２６をさらに含む。サーバ１８０は、入力／出力モジュール１２８を介して様々な装置に接続されてよい。入力／出力モジュール１２８は、どのような入力／出力モジュールであってよい。例示の入力／出力モジュール１２８はＵＳＢポートなどの複数のデータポートを含む。入力／出力モジュール１２８は、通信モジュール１１８と接続するように構成される。例示の通信モジュール１１８（例えば、通信モジュール１１８、２３８）は、イーサネットカードおよびモデム等のネットワークインターフェースカードを含む。ある態様では、入力／出力モジュール１２８は、入力装置１１６および／または出力装置１１４等の複数の装置に接続されるように構成される。例示の入力装置１１４は、キーボードと、マウスまたはトラックボール等のポインティングデバイスとを含み、それによって、ユーザはサーバ１８０に入力を提供することができる。ユーザとの対話のために他の種類の入力装置１１４も使用できる。例えば、触覚入力装置、視覚的入力装置、音響的入力装置、または脳−コンピュータインターフェース装置等。例えば、ユーザに対するフィードバックは、視覚的フィードバック、音響的フィードバック、または触覚的フィードバック等の任意の形態の感覚的フィードバックであってよく、ユーザからの入力は、例えば、音響入力、会話入力、または脳波入力を含む任意の形態であってよい。例示の出力装置１１６は、ユーザに情報を表示するための、ＬＥＤ（発光ダイオード）スクリーン、ＣＲＴ（陰極線管）スクリーン、ＬＣＤ（液晶ディスプレイ）スクリーン等のディスプレイ装置を含む。
【００７３】
本開示の一態様によれば、サーバ１８０は、メモリ１２０に包含された一つまたは複数の命令の一以上のシーケンスを実行するプロセッサ１１２に応答するサーバ１８０を用いて実施することができる。そのような命令は、データ記憶装置１２６等の他の機械読み取り可能媒体からメモリ１２０に読み込まれてよい。主メモリ１２０に包含された命令のシーケンスの実行は本明細書で説明したプロセスブロックをプロセッサ１１２に実行させる。マルチプロセッシング装置において一つのまたは複数のプロセッサがメモリ１２０に包含された命令のシーケンスを実行するように採用されてよい。別の態様では、有線式の回路がソフトウェア命令の代わりにまたはソフトウェア命令と組み合わせて本開示の様々な態様を実施すべく使用されてよい。したがって、本開示の態様は、ハードウェア回路とソフトウェアとの任意の特定の組み合わせに限定されない。
【００７４】
本明細書に記述した発明の様々な態様は、例えば、データサーバとしてのバックエンド構成要素を含むコンピューティングシステムで、または、アプリケーションサーバ等のミドルウェア構成要素を含むコンピューティングシステムで、または、それを介してユーザが本明細書に記述した発明の実装例と対話できるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ等のフロントエンド構成要素を含むコンピューティングシステムで、または、それらバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組み合わせで実施し得る。当該システムの構成要素は、任意の形態でまたは通信ネットワーク等のデジタルデータ通信の媒体によって相互接続され得る。通信ネットワーク（例えばネットワーク１５０）は、例えば、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、キャンパスエリアネットワーク（ＣＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ブロードバンドネットワーク（ＢＢＮ）、インターネット等のうちの任意の一つまたは複数を含み得る。また、この通信ネットワークは、限定ではないが、任意の一つまたは複数のネットワークトポロジを含むことができ、それらは、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スターバスネットワーク、ツリーまたは階層ネットワーク等を含む。通信モジュールは、例えば、モデムまたはイーサネットカードであり得る。
【００７５】
サーバ１８０は、限定ではないが、例えば、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータであり得る。サーバ１８０は、限定ではないが、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、携帯音楽プレーヤー、グローバルポジショニングシステム（ＧＰＳ）受信機、テレビゲーム機、および／またはテレビセットトップボックス等の別の装置に埋め込まれてよい。
【００７６】
本明細書で使用される「機械可読記憶媒体」または「コンピュータ可読媒体」という用語は、命令またはデータをプロセッサ１１２に実行のために提供することに関与する任意の一つまたは複数の媒体を指す。このような媒体は、限定ではないが、不揮発性媒体および揮発性媒体を含む多くの形態をとり得る。不揮発性媒体は、データ記憶装置１２６等の、例えば、光ディスク、磁気ディスク、またはフラッシュメモリを含む。揮発性媒体は、メモリ１２０等の動的メモリを含む。機械可読媒体の一般的な形態は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、任意の他の光学媒体、パンチカード、紙テープ、複数の孔からなるパターンを有する任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ  ＥＰＲＯＭ、任意の他のメモリチップまたはカートリッジ、またはコンピュータが読み取ることができる他の任意の媒体を含む。機械可読記憶媒体は、機械可読記憶装置、機械可読記憶基板、メモリ装置、またはそれらの１つ以上の組み合わせであり得る。
【００７７】
本明細書で使用される場合、「および」や「または」という用語で項目を分離している一連の項目に先行する「少なくとも１つ」という用語は、列記された各構成員（すなわち各項目）を修飾するのではなく、列記全体を修飾する。「少なくとも１つ」という用語は、少なくとも１つの項目の選択を必要とせず、むしろ、それら項目のいずれか１つを含むという意味、および／またはそれら項目の任意の組合せの少なくとも１つという意味、および／またはそれら項目のそれぞれの少なくとも１つを含むという意味に割り当てられる。例として、「Ａ、Ｂ、およびＣの少なくとも１つ」または「Ａ、Ｂ、またはＣの少なくとも１つ」という用語はいずれも、Ａのみ、Ｂのみ、Ｃのみ、Ａ、Ｂ、およびＣの任意の組み合わせ、および／またはＡ、Ｂ、およびＣのそれぞれの少なくとも１つを指す。
【００７８】
更に、「含む」「有する」等の語句が発明の詳細な説明又は特許請求の範囲で使用される場合、それらの語句は、請求項の移行句として採用される場合の「備える」と同様に、「備える」という語句と類似の包含的なものと意図される。
【００７９】
ある要素を単数形で言及した場合、特に明記しない限り、「一つだけ」の意味を意図しておらず、「一つまたは複数」を意味する。当業者に現在知られているか又は後に知られるようになる、本開示を通して説明した様々な構成例の要素に対する全ての構造的かつ機能的等価物は、参照により本明細書に明確に組み込まれ、本発明の技術に包含されることを意図される。さらに、上記の説明に明示的に記載されているかどうかにかかわらず、ここに開示されたもので公衆に捧げられることを意図したものはない。
【００８０】
明細書には多くの詳細が含まれているが、これらは請求されるであろう範囲に対する限定としてではなく、むしろ本発明の特定の実装例の説明として解釈されるべきである。別個の態様の文脈において明細書に記載した複数の特定の特徴は、単一の態様に組み合わせて実施することもできる。逆に、単一の態様の文脈で記載されている様々な特徴を、複数の態様で別々にまたは任意の適切なサブコンビネーションで実施することもできる。さらに、複数の特徴が特定の組み合わせで作用するものとして上述し、そのようなものとして当初は請求されたものであったとしても、ある場合には、ある請求したコンビネーションからの一つまたは複数の特徴をそのコンビネーションから切り出すことができ、また、請求したコンビネーションは、サブコンビネーションまたはサブコンビネーションの変更に向けられてもよい。
【００８１】
同様に、図面には動作が特定の順序で示されているが、そうした動作が、所望の結果を達成するために、示された特定の順序で実施されるのが必要である、または、図示された全ての動作が実行されるのが必要であると理解すべきではない。ある実装例では、マルチタスク処理及び並列処理が有利なことがある。他の変更も特許請求の範囲の範囲内にある。さらに、上述した複数の態様における様々なシステム構成要素の分離は、すべての態様においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に集積されたり、複数のソフトウェア製品にパッケージ化されてよい。
【００８２】
この明細書の発明を特定の態様の鑑定で説明したが、他の態様も実施可能であり、特許請求の範囲の範囲内にある。例えば、請求の範囲に記載した動作は、異なる順序で実施されることができなお所望の結果を達成する。一例として、図示したプロセスは、所望の結果を達成するために必ずしも図示した特定の順序や連続的な順序を必要とするものではない。ある実装例では、マルチタスク処理及び並列処理が有利なことがある。他の変更も特許請求の範囲の範囲内にある。
【００８３】
これらの及び他の実装例も特許請求の範囲の範囲内にある。
【図１】
0006456984.tif 000002
【図２】
0006456984.tif 000003
【図３Ａ】
0006456984.tif 000004
【図３Ｂ】
0006456984.tif 000005
【図３Ｃ】
0006456984.tif 000006
【図３Ｄ】
0006456984.tif 000007
【図３Ｅ】
0006456984.tif 000008
【図３Ｆ】
0006456984.tif 000009
【図４Ａ】
0006456984.tif 000010
【図４Ｂ】
0006456984.tif 000011
【図４Ｃ】
0006456984.tif 000012
【図５】
0006456984.tif 000013