添付の図面を参照しながら様々な実施形態が詳細に説明される。可能な場合はいつでも、同じまた同様の部分を参照するために、図面全体を通して同じ参照番号が使用される。特定の例および実装形態への参照は例示のためであり、本発明または特許請求の範囲を限定するものではない。
いくつかの異なるセルラーおよびモバイル通信サービスおよび規格が利用可能であり、または将来考えられ、それらのすべてが様々な実施形態を実装し、様々な実施形態から利益を受けることができる。そのようなサービスおよび規格は、たとえば、第3世代パートナーシッププロジェクト(3GPP)、ロングタームエボリューション(LTE)システム、第3世代ワイヤレスモバイル通信技術(3G)、第4世代ワイヤレスモバイル通信技術(4G)、モバイル通信用グローバルシステム(GSM(登録商標))、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)、3GSM、汎用パケット無線サービス(GPRS)、符号分割多元接続(CDMA)システム(たとえば、cdmaOne)、GSM進化型高速データレート(EDGE)、高度移動電話システム(AMPS)、デジタルAMPS(IS-136/TDMA)、エボリューションデータオプティマイズド(EV-DO)、デジタル発展型コードレステレコミュニケーション(DECT)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、ワイヤレスローカルエリアネットワーク(WLAN)、Wi-Fi保護アクセスIおよびII(WPA、WPA2)、ならびに統合デジタル発展型ネットワーク(iden)を含む。これらの技術の各々は、たとえば、音声、データ、シグナリング、および/またはコンテンツメッセージの送信および受信を伴う。個々の電気通信の規格または技術に関係する用語および/または技術的詳細に対するいかなる参照も例示目的にすぎず、請求項の文言に具体的に記載されない限り、特許請求の範囲を特定の通信システムまたは通信技術に限定するものではないことを理解されたい。
本明細書における用語「コンピューティングデバイス」は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、車両コンピューティングシステム、陸上、海上、および航空ナビゲーションシステム、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、メモリ、プログラマブルプロセッサ、およびGPS受信機または現在位置を決定する他の手段を含む類似のパーソナル電子コンピューティングデバイスのうちの、任意の1つまたはすべてを指す。用語「コンピューティングデバイス」はまた、自転車、自動車、オートバイ、航空機、ボート、船舶などの中に統合された計算システムおよび/またはナビゲーションシステムなどの大型コンピューティングデバイス内または車両内に含まれる、プロセッサおよび現在位置を決定するための手段を有する組込みコンピューティングデバイスを含む。
本明細書における用語「ジオフェンス対応アプリケーション」は、ジオフェンシングを含むロケーションベースサービスを利用し得るか、またはそれに参加し得るコンピューティングデバイス上で動作しているアプリケーションを指す。様々な実施形態では、ジオフェンス対応アプリケーションは、ジオフェンスサーバおよび/またはジオフェンス管理ユニットから1つまたは複数のジオフェンスに関する情報(たとえば、ジオフェンスの形状、エリア、外周など)を受信し得、一態様では、ジオフェンス対応アプリケーションは、特定のエリアの中の1つまたは複数のジオフェンスを監視して、そのコンピューティングデバイスがそれらのジオフェンスのうちの1つの境界を横断し、またはそれらのジオフェンスのうちの1つに別のやり方で合致するときを決定するために、そのような情報を使用し得る。
各ジオフェンス対応アプリケーションを別個に扱うことは一般的な方法であり、そのことは、コンピューティングデバイス上で動作している各ジオフェンス対応アプリケーションが、そのアプリケーションのジオフェンス境界がコンピューティングデバイス上の他のジオフェンス対応アプリケーションに関連する1つまたは複数の他のジオフェンス境界の極近傍にあるかまたはそれと重複するかどうかに関わらず、そのジオフェンス境界が合致されたかどうかを決定することを必要とする場合があることを意味する。極近傍にあるジオフェンスエリアを処理することへのこの一貫性のない手法の結果として、コンピューティングデバイスが近くのまたは重複するジオフェンスを同時に追跡するとともに、ジオフェンスが横断されるごとにジオフェンスサーバと通信しなければならないので、近くの重複する多くのジオフェンスがあるエリアに入るとき、従来のコンピューティングデバイスは、より大きいバッテリー消耗などの性能の著しい低下に遭遇する。この状況はまた、アプリケーションにとってのアプリケーション開発者がいくつかの重複するまたは近くのジオフェンスを描画するとき、単一のジオフェンス対応アプリケーションに影響を及ぼすことがある。
概して、様々な実施形態は、同じコンピューティングデバイス上で動作している1つまたは複数のジオフェンス対応アプリケーションに関連する重複する/地理的に近いジオフェンスを結合して単一の混合ジオフェンスにするためのシステムで実施されるシステムおよび方法を提供する。一実施形態では、コンピューティングデバイスが混合ジオフェンスを横断するとき、混合ジオフェンスが合致されたことを1つまたは複数のジオフェンス対応アプリケーションが同時またはほぼ同時に検出し得るように、1つまたは複数のジオフェンス対応アプリケーションの各々が混合ジオフェンスを監視し得る。したがって、混合ジオフェンスが合致されるときを、同じまたはほぼ同じ時間に1つまたは複数のアプリケーションの各々が検出するので、1つまたは複数のジオフェンス対応アプリケーションの各々は、同じ時間にジオフェンスサーバと通信し得る。したがって、ジオフェンス対応アプリケーションのジオフェンスエリアのうちの1つまたは複数を混合することによって、様々な実施形態は、1つまたは複数のジオフェンス対応アプリケーションがジオフェンスサーバと通信するのに必要とされるデータ、位置検出、および/または処理リソースの全体的な量を低減し得、それによって、コンピューティングデバイス上でのバッテリー寿命および全体的なユーザエクスペリエンスを改善する。
具現方法は、ソフトウェアで実施されてよく、ジオフェンスサーバによって実行されてよい。さらなる実施形態では、具現方法は、ハードウェア構成要素またはシステムオンチップの形態でハードウェアで実施されてよい。
一実施形態では、同じコンピューティングデバイス上で動作しているいくつかのジオフェンス対応アプリケーションに混合ジオフェンスを提供することが、ジオフェンスサーバ内で行われ得る。ジオフェンスサーバは、コンピューティングデバイス上で動作しているすべてのジオフェンス対応アプリケーション(たとえば、ジオフェンスサーバに登録されたすべてのアプリケーション)が告知されてよく、コンピューティングデバイス上で動作している1つまたは複数のジオフェンス対応アプリケーションにとって重複するかまたは極近傍にあるジオフェンスを識別するために、この情報を使用し得る。ジオフェンスサーバは、この情報を使用して、1つまたは複数のジオフェンス対応アプリケーションにとって隣接および重複するジオフェンスの一部または全部を取り囲む単一の混合ジオフェンスを描画し得る。
別の実施形態では、ジオフェンスサーバは、コンピューティングデバイス上の1つまたは複数のジオフェンス対応アプリケーションの各々に、混合ジオフェンスについての情報を提供し得、それによって、共通のジオフェンスエリアを1つまたは複数のアプリケーションに共有させる。1つまたは複数のジオフェンス対応アプリケーションの各々が共通のジオフェンスエリアを共有するので、各アプリケーションは、コンピューティングデバイスが混合ジオフェンスを横断したことを同時またはほぼ同時に検出し得、混合ジオフェンスに合致することを、1つまたは複数のジオフェンス対応アプリケーションの各々のためのジオフェンスサーバに、コンピューティングデバイスが同じまたはほぼ同じ時間に報告することを可能にする。その結果、コンピューティングデバイスは、より低い頻度でジオフェンスサーバと通信してよく、かつ/または位置を感知しようと試みてよく、それによって、システムリソースおよびバッテリー電力を節約する。
一実施形態では、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーション(すなわち、「報告アプリケーション」)からジオフェンス横断通知を受信することに応答して、ジオフェンスサーバは、コンピューティングデバイスの現在位置の極近傍にある(たとえば、重複している)報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーションのうちの1つまたは複数に関連するジオフェンスを決定し得る。ジオフェンスサーバは、これらのジオフェンスを結合/再描画して単一の混合ジオフェンスエリアにしてよく、ジオフェンスサーバは、混合ジオフェンスに関する情報を報告アプリケーションへ送ってよい。ジオフェンスサーバは、同じ混合ジオフェンス情報を同じコンピューティングデバイス上の他のジオフェンス対応アプリケーションへ同時にまたは後で送ってよく、それによって、最終的に1つまたは複数のジオフェンス対応アプリケーションの各々が共通のジオフェンス(すなわち、混合ジオフェンス)を監視することを確実にする。したがって、最終的に1つまたは複数のジオフェンス対応アプリケーションが混合ジオフェンスを同じ時間に横断することがあり、これらの横断をジオフェンスサーバに同じまたはほぼ同じ時間に報告することがあるので、そのような実施形態は、コンピューティングデバイスがジオフェンスサーバと通信し、かつ/またはそのコンピューティングデバイスの位置を感知しようと試みなければならない時間の量を低減し得る。
一実施形態では、ジオフェンスサーバは、重複ジオフェンス、または同じコンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションの極近傍にあるジオフェンスを混合するための様々な方策を実施し得る。一実施形態では、ジオフェンスサーバは、重複する/極近傍のジオフェンスを結合して様々な形状にしてよい。たとえば、ジオフェンスサーバは、ジオフェンスの外周に基づいて結合された形状を形成し、個々のジオフェンスを内部に閉じ込めるより大きいジオフェンスを作成し、かつ/または結合されたジオフェンスとしての重み付き平均形状を決定してよい。重みは、フェンスを突破する確率、フェンスのサイズ、ユースケースにとって必要な精度、ユースケースにとって必要なバッテリー節約などを含んでよい。
さらなる実施形態では、同じコンピューティングデバイス上で実行する1つまたは複数のジオフェンスアプリケーション用の共通の混合ジオフェンスを生成する動作は、具現方法の動作を実行するためのプロセッサ実行可能命令とともに構成されたコンピューティングデバイスプロセッサによって行われてよい。この実施形態では、コンピューティングデバイス上で実行する1つまたは複数のジオフェンス対応アプリケーションに代わってプロキシジオフェンスサーバとして働くために、ジオフェンス管理ユニットがコンピューティングデバイス上で実行し得る。この実施形態では、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションの各々に対して、ジオフェンス対応アプリケーション自体から、またはジオフェンスサーバから、現在位置におけるジオフェンスに関する情報を受信し得る。この情報を使用して、ジオフェンス管理ユニットは、1つまたは複数のジオフェンス対応アプリケーション用の現在位置におけるジオフェンスを再描画/結合して単一の混合ジオフェンスにしてよい。
一実施形態では、コンピューティングデバイスのプロセッサ上で実行するジオフェンス管理ユニットは、コンピューティングデバイスの位置を監視して、混合ジオフェンスが横断されるときを検出し得る。混合ジオフェンスが横断されるとき、ジオフェンス管理ユニットは、ジオフェンス基準が合致されるという通知を、コンピューティングデバイス上で実行する各ジオフェンス対応アプリケーションへ送ってよい。ジオフェンス管理ユニットはまた、通知をジオフェンスサーバへ送ってもよい。このことにより、各アプリケーションは、それ自体のジオフェンスが横断されるとそれらが決定したかのように独立に働くことが可能になり得る。ジオフェンス管理ユニットがジオフェンス対応アプリケーションに同じ時間に通知するので、アプリケーションのすべてをサポートするためにジオフェンスサーバへの単一の接続が確立されてよい。代替実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上の他のジオフェンスアプリケーションの各々へ再描画されたジオフェンスを送ってよく、そうしたジオフェンスアプリケーションは、次いで、それらが混合ジオフェンスをジオフェンスサーバから受信したかのように上記で説明したように動作し得る。
一実施形態では、ジオフェンス管理ユニットは、スタンドアロンのアプリケーションもしくはソフトウェアサービスとして、またはオペレーティングシステムの一部として実装されてよく、あるいはコンピューティングデバイスの中の専用ハードウェアで(たとえば、GPSチップの内部に)実装されてもよく、以下同様である。
様々な実施形態は、図1に示す例示的な通信システム100などの様々な通信システム内で実施され得る。通信システム100は、様々な技法を使用してその位置を決定するように構成され得るコンピューティングデバイス102を含んでよい。
一実施形態では、コンピューティングデバイス102は、GPS衛星104からワイヤレス通信118を受信するように構成されたGPSチップセットを含んでよく、受信されたそれらの通信118に基づいてその現在位置情報を決定し得る。コンピューティングデバイス102はまた、アシスト型GPS(A-GPS)機能を含んでもよい。
別の実施形態では、コンピューティングデバイス102は、その現在位置を決定するために、Wi-Fi測位システムまたはモバイルネットワークベースの測位システムなどの、様々な知られている局所的測位システムを利用し得る。たとえば、コンピューティングデバイス102は、ワイヤレス接続120を介してワイヤレスアクセスポイント(ワイヤレスアクセスポイント108として図1に示す)と通信してよく、コンピューティングデバイス102は、ワイヤレスアクセスポイント108の知られている位置に基づいて、その現在位置を決定し得る。別の例では、コンピューティングデバイス102は、位置が知られている基地局から(基地局106などから)受信されるワイヤレス信号122に基づいて、その現在位置を同様に決定し得る。
コンピューティングデバイス102はまた、コンピューティングデバイス102がGPSと局所的測位システムの組合せを使用してその位置を決定するハイブリッド測位システムを利用し得る。GPSはオープンエリアではより正確であり得るが屋内または高い建物の間では不十分にしか機能しない場合があるので、コンピューティングデバイス102は、GPSを単独で使用することの限界を克服するために、セルタワー信号、ワイヤレスインターネット信号、Bluetooth(登録商標)ビーコン、他の局所的測位システムなどの1つまたは複数の他の測位技術と組み合わせてGPSを利用するように構成されてよい。たとえば、コンピューティングデバイス102は、建物または荒れ模様の天候によって妨害されないセルタワー信号に基づく局所的測位システムを使用し得る。別の例では、コンピューティングデバイス102は、高いWi-Fi密度を有する市街地での極めて正確な測位を行うために、GPSに加えてWi-Fi測位システムを活用してよい。
コンピューティングデバイス102は、インターネット112に接続するように構成され得る。たとえば、コンピューティングデバイス102は、Wi-Fiアクセスポイントなどのワイヤレスアクセスポイント108を通じて確立されたワイヤレス接続120経由で、インターネット112に接続するように構成され得る。ワイヤレスアクセスポイント108は、有線接続124を通じてインターネット112と接続してもよい。さらに、コンピューティングデバイス102およびセルラータワーまたは基地局106は、CDMA、TDMA、GSM、PCS、3G、4G、LTE、または任意の他のタイプのセルラー接続であってよいセルラー接続122経由でデータを交換し得る。セルラータワーまたは基地局106は、有線接続126を通じてインターネット112と接続してもよい。
一実施形態では、コンピューティングデバイス102は、1つまたは複数のジオフェンス対応アプリケーションを含み得る。ジオフェンス対応アプリケーションのうちの1つまたは複数の各々は、その特定のジオフェンス対応アプリケーションに関連する1つまたは複数のジオフェンス(すなわち、実世界の地理的エリアに関連する仮想的な外周)を管理し得る。ジオフェンス対応アプリケーションのうちの1つまたは複数の各々は、コンピューティングデバイス102の測位機能を利用して、コンピューティングデバイス102がそのジオフェンスのうちの1つの外周を横断した(すなわち、ジオフェンスに合致した)かどうかを決定し得る。コンピューティングデバイス102がジオフェンス対応アプリケーションに関連するジオフェンスに合致したとき、そのアプリケーションは、その横断をジオフェンスサーバ114に報告し得、コンピューティングデバイス102の現在位置に近いジオフェンスの位置などの、更新されたジオフェンス情報を要求し得る。
一実施形態では、ジオフェンスサーバ114は、コンピューティングデバイス102などの様々なコンピューティングデバイス上で動作しているジオフェンス対応アプリケーション用のジオフェンス情報を管理および更新するように構成され得る。ジオフェンスサーバ114は、特定のジオフェンス対応アプリケーションに関連するジオフェンスエリアを記憶し得るジオフェンス情報データベース116と通信し得る。ジオフェンスサーバ114は、有線接続130を通じてインターネット112に接続し得、そのようにジオフェンス情報要求をジオフェンス対応アプリケーションから受信するとともに、更新されたジオフェンス情報をジオフェンス対応アプリケーションへ送ることができる場合がある。
図2は、知られている技法に従ってジオフェンス対応アプリケーション上のロケーションベースサービスを実施するためのシグナリングおよびコールフロー200を示す。
現在、アプリケーション開発者は、ジオフェンスサーバ114上で動作しているジオフェンシングサービス(たとえば、QualcommによるGimbal(登録商標)プラットフォーム)にアプリケーションを登録し得る。アプリケーション開発者のコンピュータ202およびジオフェンスサーバ114は、様々なアプリケーション登録通信207を交換し得る。たとえば、アプリケーション開発者は、そのアプリケーションについての様々な詳細をジオフェンスサーバ114に提供してよく、ジオフェンスサーバは、アプリケーションがジオフェンシングサービスと適合性があるかどうかをテストするために、様々な確認、検証、および/または品質保証テストを実行してよく、承認を受信した後、アプリケーション開発者は、開発者のアプリケーションがジオフェンスサーバ114と通信することを可能にするために(すなわち、ジオフェンシング機能を有効にするために)、アプリケーションの中に組み込むためのジオフェンシングサービスから受信されたコードまたは命令(たとえば、ソフトウェア開発キットすなわちSDK)を含めてよい。
登録プロセスの後、アプリケーション開発者のコンピュータ202は、アプリケーション206用の1つまたは複数のジオフェンスを規定するために、管理ポータルまたはアプリケーションプログラミングインターフェース(API)を通じてジオフェンスサービスにアクセスし得る。たとえば、アプリケーション開発者のコンピュータ202は、ジオフェンスの外周、形状、サイズなどを記述する情報(たとえば、1つまたは複数のジオフェンス定義208)を、ジオフェンスサーバ114へ送ってよい。ジオフェンスサーバ114は、動作210において、1つまたは複数のジオフェンス定義208を開発者のアプリケーション206と関連付けてよい。
いくつかの点において、コンピューティングデバイス102のユーザは、アプリケーション開発者のコンピュータ202がコンピューティングデバイス102の中に作成したジオフェンス対応アプリケーション206をダウンロードし得る。ユーザはまた、ジオフェンス対応アプリケーション206がジオフェンスサーバ114と通信することを可能にするために、ジオフェンス対応アプリケーション206を実行させ得る。たとえば、ジオフェンス対応アプリケーション206は、ジオフェンスサーバ114と通信し得、1つまたは複数のジオフェンス定義208を含むジオフェンス情報212を受信し得る。
ジオフェンス情報212を受信した後、アプリケーション206は、動作214において、コンピューティングデバイス102の現在位置(たとえば、緯度および経度)を決定する。図1を参照しながら上記で説明したように、アプリケーション206は、GPSまたはWi-Fiベースのロケーションサービスなどの、コンピューティングデバイス102にとって利用可能な様々なロケーションベースのシステムまたは機能を利用し得る。アプリケーション206は、次いで、動作216において、ジオフェンス横断が発生したかどうかをコンピューティングデバイス102の現在位置に基づいて決定する。ジオフェンス対応アプリケーション206は、コンピューティングデバイスがジオフェンスに合致したと決定するまで、コンピューティングデバイスの現在位置を監視し続ける。
コンピューティングデバイスがジオフェンス(たとえば、1つまたは複数のジオフェンス定義208の中で規定されたジオフェンス)を横断したことをアプリケーション206が認識した後、ジオフェンス対応アプリケーション206は、ジオフェンス横断通知218をジオフェンスサーバ114へ送ってよい。ジオフェンス横断通知218は、ジオフェンス横断に関するアクションが起こらなければならないこと(たとえば、コンピューティングデバイスのユーザに通知をプッシュすること)についてジオフェンスサーバの注意を喚起し得る。また、ジオフェンスサーバ114は、アプリケーション開発者のコンピュータ202からの1つまたは複数のジオフェンス定義208に基づいて、最近追加されたジオフェンスまたはコンピューティングデバイス102の現在位置にある他のジオフェンスに関する情報を含み得る、更新されたジオフェンス情報220をジオフェンス対応アプリケーション206へ送ってもよい。
図3Aおよび図3Bは、互いに重複するかまたは極近傍にあるジオフェンスエリアの例示的な描写の俯瞰図300、320を示す。
図3Aは、同じコンピューティングデバイス上の異なるジオフェンス対応アプリケーションに関連する個々のジオフェンスの俯瞰図300を示す。
上記で説明したように、コンピューティングデバイス102は、様々なジオフェンス対応アプリケーションを含み得る。ジオフェンス対応アプリケーションは、様々な組織、ビジネス、イベントなどによって開発されてよく、かつ/またはそれらに関連付けられてよい。たとえば、特定の店舗のオーナーが、消費者に店舗の現在の在庫および店舗における毎日のセールスを告知するためのジオフェンス対応アプリケーションを開発していることがある。
一例では、コンピューティングデバイス102は、3つのジオフェンス対応アプリケーションを含み得る。第1のジオフェンス対応アプリケーションは、特定の小売店向けのアプリケーションであってよく、第1のジオフェンス対応アプリケーションは、その小売店(すなわち、店舗302)の物理的位置を囲む第1のジオフェンス308を監視していてよい。図2を参照しながら上記で説明したように、店舗のオーナーが、ジオフェンシングサービスを有するジオフェンス308を前に規定した場合があり、そのジオフェンシングサービスに関連するジオフェンシングサーバは、第1のジオフェンス対応アプリケーションがジオフェンス308の監視を開始(すなわち、店舗302向けのロケーションベースサービスの実施を開始)できるようにするために、ジオフェンス情報を第1のジオフェンス対応アプリケーションへ送った場合がある。
同様に、第2のジオフェンス対応アプリケーションが、劇場304を囲む第2のジオフェンス310を監視していてよく、第3のジオフェンス対応アプリケーションが、レストラン306を囲む第3のジオフェンス312を監視していてよい。別の実施形態では、ジオフェンス308、310、312は、モール向けに開発者によって作成されたアプリケーションなどの、単一のジオフェンス対応アプリケーションに関連付けられてよい。
図3Aに示すように、開発者は、様々な異なる形状およびサイズを作成するようにジオフェンス308、310、312の境界を規定し得る。たとえば、ジオフェンス308は長方形であり、ジオフェンス310は菱形であり、ジオフェンス312は円である。図示されていないが、ジオフェンスがほとんどどんな2次元または3次元の形状にも適合し得ることが期待される。
実際には、ジオフェンスエリアは、実装形態の制限に起因する最低限の有効な半径を有してよい。たとえば、GPSを使用するコンピューティングデバイスは、最低限の有効な範囲として50メートルしか有しなくてよい。その結果、ジオフェンスは、しばしば、特にモールや繁華街などの高密度な位置において、近くの他のジオフェンスエリアと重複することがある。したがって、図3Aに示すように、ジオフェンス308、310、312のうちの2つ以上が重複するかまたはさもなければ極近傍にあるエリアがあり得る。
ジオフェンスは、コンピューティングデバイスではなくアプリケーションに特有であってよく、そのため、コンピューティングデバイス上の複数のアプリケーションがジオフェンシングを実施しているとき、コンピューティングデバイス上の各ジオフェンス対応アプリケーションは、そのジオフェンスのうちの1つを横断したかどうかを独立に決定し、ジオフェンスを横断した後の更新されたジオフェンスパラメータ情報を得るためにジオフェンスサーバに連絡をとる。たとえば、コンピューティングデバイスは、モールエリアの中のいくつかのジオフェンスを独立に監視する複数のジオフェンス対応アプリケーションを含み得る。ジオフェンス対応アプリケーションによって監視されるジオフェンスの一部または全部が重複し得るかまたは極近傍にあり得るので、ジオフェンス対応アプリケーションは、ジオフェンスが横断されたかどうかを決定し、それらのそれぞれのジオフェンスが横断されるときはいつでも短時間内にジオフェンスサーバに連絡をとるために、位置検出無線(location-sensing radio)(たとえば、GPS、Wi-Fi、Bluetooth、セルラーなど)を独立に使用することがあり、そのようにコンピューティングデバイス上の相当な量のバッテリー電力および/または処理リソースを潜在的に使い果たす。言い換えれば、コンピューティングデバイスが、重複するまたは近いジオフェンスエリアを独立に追跡するアプリケーションを含むとき、コンピューティングデバイスは、更新された位置決定を取得するために位置検出無線を繰り返し使用しなければならないことがあり、そのことがバッテリー電力を消費し、いくつかのアプリケーションでは、また、いくつかの近くのジオフェンスの位置に接近するとき(すなわち、合致されたジオフェンスをアプリケーションが有するごとに少なくとも1回)、ジオフェンスサーバと通信するとともに更新されたジオフェンスパラメータ情報をジオフェンスサーバから受信しなければならないこともあり、そのこともバッテリー電力を消費する。この状況はまた、店舗ごとにジオフェンスを含むモール向けのアプリケーションのように、単一のジオフェンス対応アプリケーションが同じエリアの中に重複またはほぼ重複する複数のジオフェンスを有するときに起こる場合がある。
図3Aに示すように、ユーザ316が経路314に沿って店舗302まで歩くとき、ユーザのコンピューティングデバイス(図示せず)は、ジオフェンス308、310、312を横断することを検出するために位置検出無線を使用しなければならない場合があり、第1、第2、および第3のジオフェンス対応アプリケーションのいずれかにとってジオフェンス308、310、312が横断されるときはいつでも、ジオフェンスサーバと通信しなければならない場合がある。さらに、ジオフェンス308、310、312が重複するので、ユーザ316が経路314に沿って歩くとき、ジオフェンス308、310、312を横断することを検出するために、コンピューティングデバイスは高い頻度で位置検出無線を使用しなければならない場合があり、コンピューティングデバイスはまた、わずかな量の時間の中で数回ジオフェンスサーバと通信しなければならない場合があり、それによって、コンピューティングデバイスの無線トランシーバ、プロセッサ、およびバッテリーに対する過剰な需要を引き起こす。たとえば、ユーザ316が店舗302まで歩くとき、コンピューティングデバイスは、5つのジオフェンス横断を検出しなければならないことがあり、ジオフェンスサーバと矢継ぎ早に5回(すなわち、ジオフェンスが横断するサイト318a〜318eのうちの1つをコンピューティングデバイスが通過する時間ごとに1回)通信しなければならないことがある。
図3Bは、同じコンピューティングデバイス上の1つまたは複数のジオフェンス対応アプリケーションに関連する、複数の重複するまたは近くのジオフェンス308、310、および312を結合することによって生成される単一の混合ジオフェンス322の図320を示す。
一実施形態では、ジオフェンスサーバは、同じコンピューティングデバイス上の1つまたは複数のジオフェンス対応アプリケーションが、重複するまたは近くのジオフェンスを有するときを認識し得、これらのジオフェンスを混合して単一の混合ジオフェンスを作成し得る。重複するまたはすぐ近くの別個のジオフェンスを混合することによって、ジオフェンスサーバが、同じコンピューティングデバイス上で動作しているジオフェンス対応アプリケーション間の同期を低減および/または改善し得、それによって、ジオフェンス対応アプリケーションに代わってジオフェンス横断を検出し、かつ/またはジオフェンスサーバと通信するコンピューティングデバイスが、より短い時間および/またはより小さい電力しか費やさないことを可能にする。
さらなる実施形態では、コンピューティングデバイス上で動作しているジオフェンス管理ユニットアプリケーションが、同じコンピューティングデバイス上で動作しているジオフェンス対応アプリケーションのジオフェンスを混合し得る。
図3Bに示すように、ジオフェンスサーバは、第1、第2、および第3のジオフェンス対応アプリケーションがコンピューティングデバイス上で動作していることを認識し得、ジオフェンス308、310、312を結合して単一の混合ジオフェンス322にしてよい。一実施形態では、ジオフェンスサーバは、図15A〜図15Cを参照しながら以下でさらに説明するような、複数のジオフェンスを結合して単一の混合ジオフェンスにするための様々な技法を使用し得る。
ジオフェンス308、310、312を結合した後、ジオフェンスサーバ(または、ジオフェンス管理ユニット)は、第1、第2、および第3のジオフェンス対応アプリケーションへ、更新されたジオフェンス情報として混合ジオフェンス322を送ってよい。したがって、一実施形態では、ジオフェンスサーバは、第1、第2、および第3のジオフェンス対応アプリケーションの別個のジオフェンス308、310、312を混合ジオフェンス322と置き換えてよく、そのことは、各アプリケーションが混合ジオフェンス322の監視を開始してよいことを意味する。
第1、第2、および第3のジオフェンス対応アプリケーションが同じ混合ジオフェンス322を監視し得るので、第1、第2、および第3のジオフェンス対応アプリケーションは、混合ジオフェンス322が横断されるときを同時またはほぼ同時に認識し得、コンピューティングデバイスは、第1、第2、および第3のジオフェンス対応アプリケーションに代わって、同じまたはほぼ同じ時間にジオフェンス横断をジオフェンスサーバに報告し得、それによって、位置検出無線を使用してジオフェンス横断を検出するとともにジオフェンスサーバと通信するコンピューティングデバイスが費やすことがある時間および/または電力の量を低減する。
たとえば、図3Bに示すように、ユーザ316が経路314に沿って店舗302まで歩くとき、ユーザ316のコンピューティングデバイスは、1つのジオフェンスが横断するサイト324において混合ジオフェンス322を横断し得、その時間において、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションごとにジオフェンス境界が合致され得る。したがって、ジオフェンス対応アプリケーションが同じ混合ジオフェンス322を監視し、混合ジオフェンス322が同じまたはほぼ同じ時間に横断されるときをそのように認識するので、図3Aに上記で示すようなサイト318a〜318eを横断する5つの別個のジオフェンスを検出し、サイト318a〜318eを横断するジオフェンスの各々において5回ジオフェンスサーバと通信するのではなく、コンピューティングデバイスは、代わりに、サイトを横断する1つを検出しジオフェンス対応アプリケーションの各々に対してジオフェンスサーバと(たとえば、同じ送信の中で)1回通信しさえすればよい場合がある。
図4Aおよび図4Bは、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションによって使用するための混合ジオフェンスを生成するために、サーバ上で実行するプロセッサによって、またはそのジオフェンスが混合ジオフェンスの中で取り囲まれているアプリケーションに代わって混合ジオフェンスを監視するコンピューティングデバイス上で動作しているジオフェンス管理ユニットによって、実行され得る具現方法400、430を示す。
方法400の動作は、コンピューティングデバイスの現在位置に地理的に近いと決定されたジオフェンスをサーバが混合し得る一実施形態を実施する。コンピューティングデバイスの現在位置に地理的に近いジオフェンスに注目することによって、サーバは、ほとんどのコンピューティングデバイスユーザが比較的小さい地理的領域内にいるという傾向を活用して、妥当な数の有用な混合ジオフェンスを生成し得る。たとえば、国全体に渡って位置するジオフェンスを結合するのではなく、サーバは、ユーザの自宅または勤務先に近いジオフェンスのみを結合してよい。
図4Bを参照しながら以下で説明するものなどのさらなる実施形態では、ジオフェンスサーバは、モバイルデバイスの現在位置とは無関係に、よりおおまかにジオフェンスを結合して混合ジオフェンスにしてよい。具体的には、ジオフェンスサーバは、コンピューティングデバイスの現在位置を顧慮せずに、互いに地理的に近いと決定されたジオフェンスのグループから混合ジオフェンスを生成するように構成され得る。したがって、そのような実施形態では、ジオフェンスサーバは、様々な地理的エリア(たとえば、国の州または全地域)にとって完全な全数量の混合ジオフェンスをあらかじめ生成してよく、ジオフェンス横断通知を受信することに応答して、または「プッシュされた」データの形態で先制してなど、これらの混合ジオフェンスのうちの1つまたは複数を、必要に応じてコンピューティングデバイスへ送ってよい。
説明しやすいように、図4A〜図7Bを参照しながら以下で説明するものなどの様々な実施形態は、コンピューティングデバイスの現在位置を含む、またはそれに依存する動作を含み得る。しかしながら、コンピューティングデバイスの現在位置へのいかなる参照または依存性も、特許請求の範囲に明示的に記載されない限り、特許請求の範囲を限定するものではない。
図4Aは、同じコンピューティングデバイス上で動作している異なるジオフェンス対応アプリケーションに関連する複数のジオフェンスを結合して単一の混合ジオフェンスにするために、ジオフェンスサーバ上で実施され得る具現方法400を示す。一実施形態では、ジオフェンスサーバは、同じコンピューティングデバイス上で動作しているジオフェンス対応アプリケーションに混合ジオフェンスを送ってよく、その結果、ジオフェンス対応アプリケーションは同じジオフェンスを監視し、したがって、混合ジオフェンスが合致されるときを同じまたはほぼ同じ時間に検出する。
ブロック402において、ジオフェンスサーバが、報告アプリケーションからのジオフェンス横断通知を求めて監視し得る。一実施形態では、報告アプリケーションは、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションであってよく、報告アプリケーションは、位置検出無線を介して決定されたそのコンピューティングデバイスの現在位置に基づいて、ジオフェンスが横断されたことを検出している場合がある。ジオフェンスが横断されたことを検出することに応答して、報告アプリケーションは、図2を参照しながら上記で説明したように、ジオフェンスサーバへジオフェンス横断通知(たとえば、メッセージ)を送ってよい。
別の実施形態では、ジオフェンス横断通知は、ロケーションベースサービスを報告アプリケーションに提供するためにジオフェンスサーバが必要とする場合がある情報を含んでよい。たとえば、ジオフェンス横断通知は、報告アプリケーションの識別情報、報告アプリケーションのコンピューティングデバイスの識別情報、コンピューティングデバイスの現在位置、ユーザの識別情報(たとえば、ユーザの電話番号および電子メールアドレス)などを含んでよい。
決定ブロック404において、ジオフェンスサーバは、ジオフェンスサーバが報告アプリケーションからジオフェンス横断通知を受信したかどうかを決定し得る。ジオフェンスサーバが報告アプリケーションからジオフェンス横断通知を受信していないとジオフェンスサーバが決定するとき(すなわち、決定ブロック404=「No」)、ジオフェンスサーバがジオフェンス横断通知を報告アプリケーションから受信したときを認識するための決定ブロック404におけるプロセスを、ジオフェンスサーバは継続的に反復してよい。一実施形態では、ジオフェンスサーバがジオフェンス横断通知を受信するまで、ジオフェンスサーバはアイドルまたは低電力状態にとどまってよい。
ジオフェンスサーバが報告アプリケーションからジオフェンス横断通知を受信したとジオフェンスサーバが決定するとき(すなわち、決定ブロック404=「Yes」)、ブロック406において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスが以前にジオフェンスサーバに登録されていないとき、報告アプリケーションのコンピューティングデバイスを登録してよい。一実施形態では、ジオフェンスサーバは、ジオフェンス横断通知に含まれるコンピューティングデバイスの識別情報を記録すること、およびコンピューティングデバイスを報告アプリケーションに関連付けることによって、報告アプリケーションのコンピューティングデバイスを登録し得る。コンピューティングデバイスを登録することが、図5を参照しながら以下でさらに説明される。
ブロック408において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスの現在位置を決定し得る。上記で説明したように、ジオフェンスサーバは、報告アプリケーションから受信されるジオフェンス横断通知の一部として、報告アプリケーションのコンピューティングデバイスの現在位置を受信し得る。別の実施形態では、ジオフェンスサーバは、そのコンピューティングデバイスの現在位置を要求する信号を、報告アプリケーションへ送ってよい。
ブロック410において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスに関連するジオフェンス対応アプリケーションを決定し得る。一実施形態では、ジオフェンスサーバは、ブロック406を参照しながら上記で説明したようにジオフェンス対応アプリケーションのコンピューティングデバイスを登録することなどの、ジオフェンス対応アプリケーションとそれらのコンピューティングデバイスとの間の関連付けを維持し得、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイス上で含まれている(すなわち、関連付けられた)他のジオフェンス対応アプリケーションを決定するために、これらの関連付けを使用し得る。たとえば、ジオフェンスサーバは、コンピューティングデバイスに関連するジオフェンス対応アプリケーション(報告アプリケーションを含む)を決定するために、報告アプリケーションのコンピューティングデバイスの識別基準を使用してデータベース探索を実行し得る。
ブロック412において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーションに関連するジオフェンスを決定し得る。たとえば、図3Aを参照しながら上記で示すように、報告アプリケーション(たとえば、第1のジオフェンス対応アプリケーション)に加えて、コンピューティングデバイス上で動作している他の2つのジオフェンス対応アプリケーション(たとえば、第2および第3のジオフェンス対応アプリケーション)があること、および各ジオフェンス対応アプリケーションが1つまたは複数のジオフェンスを有することを、ジオフェンスサーバは決定し得る。別の実施形態では、ジオフェンスは、単一のジオフェンス対応アプリケーションに関連付けられてよい。
ブロック414において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスの現在位置に地理的に近いジオフェンスを決定し得る。実施形態では、ジオフェンスサーバは、様々な計算を実行して、報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーション用のジオフェンスが、重複するかつ/または極近傍にある(すなわち、地理的に近い)かどうかを決定し得る。たとえば、ジオフェンスサーバは、コンピューティングデバイスの現在のエリアにおけるジオフェンスの各々のエリアおよび/または外周を決定し得、重複するかまたはほとんど重複するエリアおよび/または外周を複数のジオフェンスが有するかどうかを決定し得る。さらなる実施形態では、2つのジオフェンスが互いからいくらかの距離内にあるときなど、ジオフェンスは重複することなく地理的に近くあり得る。
ブロック416において、ジオフェンスサーバは、現在位置における地理的に近いジオフェンスを結合して混合ジオフェンスにしてよい。ジオフェンスサーバは、ジオフェンスを結合するための様々な技法を実施し得る。たとえば、ジオフェンスサーバは、地理的に近い別個のジオフェンスの各々を取り囲む混合ジオフェンスを生成してよく、またはジオフェンスサーバは、中心をもつ形状のジオフェンスをジオフェンスの形状の重み付き平均を使用して表す混合ジオフェンスを作成してよい。ジオフェンスを結合して混合ジオフェンスにすることが、図15A〜図15Cを参照しながら以下でさらに説明される。
ブロック418において、ジオフェンスサーバは、コンピューティングデバイスへ、すなわち報告アプリケーションなどへ、混合ジオフェンスを送ってよい。したがって、一実施形態では、混合ジオフェンスを受信した後、報告アプリケーションは、報告アプリケーションの開発者によって規定されたジオフェンスではなく混合ジオフェンスを使用して、ジオフェンス横断に対する監視を開始してよい。
別の実施形態では、随意のブロック420において、ジオフェンスサーバが、報告アプリケーションのコンピューティングデバイスに関連する他のジオフェンス対応アプリケーションへ混合ジオフェンスを送ってよい。たとえば、それらのジオフェンス対応アプリケーションが同じジオフェンスの監視を即時に開始するように、ジオフェンスサーバは、同じコンピューティングデバイス上の各ジオフェンス対応アプリケーションに混合ジオフェンスを「プッシュ」してよい。
ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、ジオフェンスサーバは、ブロック402に戻る継続的なループの中で本具現プロセスを実行してよい。一実施形態では、ジオフェンスサーバは、同じコンピューティングデバイス上の各ジオフェンス対応アプリケーションからジオフェンス横断通知を最終的に受信し得、それらのジオフェンス対応アプリケーションの各々に、監視すべき共通の混合ジオフェンスを送るための具現プロセスを実行し得る。したがって、コンピューティングデバイスの現在のエリアにおいてジオフェンスを有するジオフェンス対応アプリケーションの各々は、同じ混合ジオフェンスを共有し得、ジオフェンス対応アプリケーションの同じジオフェンスの監視の結果として、コンピューティングデバイスが混合ジオフェンスを横断するとき、コンピューティングデバイスは、ジオフェンス対応アプリケーションに代わってジオフェンスサーバとの通信を調和/同期させ得る。
さらなる実施形態では、ジオフェンスサーバは、単一のジオフェンス対応アプリケーションにとって地理的に近い複数のジオフェンスを結合して混合ジオフェンスにするために、上記で説明した動作を実行してよく、それによって、単一のジオフェンス対応アプリケーションが複数の個々のジオフェンスではなく単一の混合ジオフェンスを監視することを可能にする。
上述のように、図4Bは、デバイスの現在位置を顧慮せずに、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションによって使用するための混合ジオフェンスを生成するために、ジオフェンスサーバによって実施され得る具現方法430を示す。
一実施形態では、ジオフェンスサーバは、コンピューティングデバイス上で実行するすべての可能なジオフェンス対応アプリケーションにとって可能なジオフェンスのすべてへのアクセスを有し得る。そのような実施形態では、ジオフェンスサーバは、コンピューティングデバイス上のジオフェンス対応アプリケーションにとって利用可能なすべての可能な混合ジオフェンスを周期的に(たとえば、毎晩または毎週)作成および記憶してよい。したがって、さらなる実施形態では、ジオフェンス横断通知またはジオフェンス情報を得るための別の要求をコンピューティングデバイス上のアプリケーションから受信することに応答して、ジオフェンスサーバは、記憶された混合ジオフェンスに迅速にアクセスし得、要求しているアプリケーションへそれを送ってよい。言い換えれば、ジオフェンスサーバは、アプリケーション用に事前に生成された混合ジオフェンスを準備してよく、事前に作られたそれらの混合ジオフェンスを要求または必要に応じてアプリケーションへ送ってよい。
ブロック432において、ジオフェンスサーバは、図4Aを参照しながら説明した方法400のブロック406において上記で説明したように、コンピューティングデバイスを登録し得る。ジオフェンスサーバはまた、ブロック434において、ブロック432における登録プロセスの一部として、コンピューティングデバイスに関連する1つまたは複数のジオフェンス対応アプリケーションを識別することなどによって、コンピューティングデバイスに関連するジオフェンス対応アプリケーションを決定し得る。
ブロック436において、ジオフェンスサーバは、図4Aを参照しながら説明した方法400のブロック412の動作を参照しながら概して説明したように、コンピューティングデバイス上のジオフェンス対応アプリケーションに関連するジオフェンスを識別し得る。たとえば、ジオフェンスサーバは、モバイルデバイス上で動作している各ジオフェンス対応アプリケーションに関連する1つまたは複数のジオフェンスを発見するために、ジオフェンスデータベース116の中で探索操作を実行し得る。さらなる実施形態では、ジオフェンスサーバは、コンピューティングデバイスからいくらかの距離内にあるジオフェンスのみを識別してよい。たとえば、ジオフェンスサーバは、処理リソースを節約するために、コンピューティングデバイスから100マイル内のジオフェンスのみを識別してよい。別の実施形態では、ジオフェンスサーバは、コンピューティングデバイスの現在位置に関わらず、ブロック434においてコンピューティングデバイスに関連付けられたジオフェンス対応アプリケーションに関連する、あらゆるジオフェンスを識別してよい。
ジオフェンスサーバはまた、ブロック438において、互いに地理的に近い識別されたジオフェンスを決定し得る。一実施形態では、それらのそれぞれのエリアが互いからいくらかの距離内にあるとき、またはそれらのエリアが規定のしきい値を上回って重複(たとえば、10%を越える重複)するとき、ジオフェンスは互いに地理的に近くあり得る。たとえば、それらのエリアが重複するので、ジオフェンスサーバは、図3Aを参照しながら上記で説明したジオフェンス308、310、312が互いに地理的に近いと決定し得る。ブロック440において、サーバはまた、ブロック438において地理的に近いと決定された識別されたジオフェンスをグループ化してよい。
ブロック442において、ジオフェンスサーバは、識別されたジオフェンスのグループごとに、図4Aを参照しながら上記で説明した方法400のブロック416の動作と類似の動作を実行することなどによって、各グループの識別されたジオフェンスを結合することによって混合ジオフェンスを生成し得る。一実施形態では、ブロック442の動作を実行することによって、ジオフェンスサーバは、ジオフェンス対応アプリケーションにとって利用可能なあらゆる可能な混合ジオフェンス-または、代替として、すべての可能な混合ジオフェンスの特定のサブセット(たとえば、いくつかのエリアにとっての混合ジオフェンス)-を生成し得る。ブロック444において、ジオフェンスサーバはまた、ブロック442において生成された各混合ジオフェンスを、後で使用できるように記憶し得る。ジオフェンスサーバは、ブロック452において、いくらかの時間期間(たとえば、24時間、1週間、または数か月など)だけ随意に待機してよい。ジオフェンスサーバはまた、ブロック434において開始する上記で説明した動作を反復してよい。したがって、一実施形態では、ジオフェンスサーバは、記憶されているジオフェンスのセットを最新に保つために、たとえば、通常のジョブまたルーチンの一部として上記の動作を反復してよい。
さらなる実施形態では、ジオフェンスサーバは、上記で説明した動作と同時にまたはその後に行われ得る他の動作を実行してよい。随意のブロック446において、ジオフェンスサーバは、図4Aを参照しながら説明した方法400のブロック402において上記で説明したように、コンピューティングデバイス上で動作している報告アプリケーションからのジオフェンス横断通知を求めて随意に監視し得る。
随意の決定ブロック448において、ジオフェンスサーバは、ジオフェンスサーバがコンピューティングデバイスから、すなわち上記で説明した報告アプリケーションなどからジオフェンス横断通知を受信したかどうかを決定し得る。ジオフェンスサーバがジオフェンス横断通知を受信していないとジオフェンスサーバが決定するとき(すなわち、随意の決定ブロック448=「No」)、サーバは、サーバが報告アプリケーションからジオフェンス横断通知を受信したときを認識するための、随意のブロック446において開始するプロセスを継続的に反復してよい。一実施形態では、ジオフェンスサーバがジオフェンス横断通知を受信するまで、ジオフェンスサーバはアイドルまたは低電力状態にとどまってよい。
ジオフェンスサーバがジオフェンス横断通知を受信したとジオフェンスサーバが決定するとき(すなわち、随意の決定ブロック448=「Yes」)、サーバは、随意のブロック450において、記憶された混合ジオフェンスを報告アプリケーションへ送ってよい。一実施形態では、報告アプリケーションへ送られる記憶された混合ジオフェンスは、報告アプリケーションに関連付けられている場合がある(すなわち、ブロック442において上記で説明したように混合ジオフェンスを生成するために、報告アプリケーションに関連するジオフェンスが使用された場合がある)。ジオフェンスサーバはまた、随意のブロック446において開始する上記の動作を反復してよい。
随意のブロック450の動作の別の実施形態では、ジオフェンスサーバは、ジオフェンス横断通知を受信することなく、先制して1つまたは複数の混合ジオフェンスをコンピューティングデバイスへ送ってよい。たとえば、ジオフェンスサーバは、コンピューティングデバイスに混合ジオフェンスをプッシュしてよく、それによって、コンピューティングデバイス上のジオフェンス対応アプリケーションがそれらの混合ジオフェンスの監視をほぼ即時に開始できるようにする。したがって、そのような実施形態では、混合ジオフェンスによってカバーされるエリアへコンピューティングデバイスが移動するとき、そのエリアを監視するジオフェンス対応アプリケーションは、更新されたジオフェンス情報をジオフェンスサーバに要求する必要なく、混合ジオフェンス情報に迅速にアクセスし得る。
図5は、報告アプリケーションに関連付けられるべきコンピューティングデバイスを登録するために、ジオフェンスサーバによって実施され得る具現方法500を示す。方法500の動作は、図4Aを参照しながら上記で説明した方法400のブロック406の動作の一実施形態を実施する。したがって、一実施形態では、ジオフェンスサーバは、ジオフェンスサーバが報告アプリケーションからジオフェンス横断通知を受信したと決定した後(すなわち、決定ブロック404=「Yes」)、方法500の実行を開始してよい。
ブロック502において、ジオフェンスサーバが、報告アプリケーションのコンピューティングデバイスに関する情報を受信し得る。一実施形態では、ジオフェンスサーバは、コンピューティングデバイスのジオフェンス横断通知を報告することの一部として、報告アプリケーションのコンピューティングデバイスについての情報を受信し得、またはジオフェンスサーバは、ジオフェンス横断通知を受信した後、コンピューティングデバイスに識別情報を提供するように報告アプリケーションに別個に要求してよい。
決定ブロック504において、ジオフェンスサーバは、報告アプリケーションがすでにコンピューティングデバイスに関連付けられているかどうかを決定し得る。言い換えれば、ジオフェンスサーバは、この特定のコンピューティングデバイスでの以前のジオフェンス横断通知がこれまでに報告アプリケーションに報告されたかどうかを決定し得る。一実施形態では、他のコンピューティングデバイス上に報告アプリケーションの複数のコピーがあり得るので、ジオフェンスサーバは、同じコンピューティングデバイス上で動作するジオフェンス対応アプリケーションをジオフェンスサーバが確実に追跡し得るように、報告アプリケーションがその上で動作している特定のコンピューティングデバイスに報告アプリケーションを関連付けてよい。一実施形態では、報告アプリケーションが、以前にそのコンピューティングデバイス上のジオフェンスサーバとまったく通信していなかったとき(たとえば、ちょうどコンピューティングデバイス上にインストールされ初めて実行された結果として)、ジオフェンスサーバは、報告アプリケーションとコンピューティングデバイスとの間の関連付けがすでにないと決定してよい。
報告アプリケーションがすでにコンピューティングデバイスに関連付けられているとジオフェンスサーバが決定するとき(すなわち、決定ブロック504=「Yes」)、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスの現在位置を決定することによって、図4Aを参照しながら上記で説明した方法400のブロック408におけるプロセスの実行を続けてよい。
報告アプリケーションのコンピューティングデバイスがまだ登録されていないとジオフェンスサーバが決定するとき(すなわち、決定ブロック504=「No」)、ジオフェンスサーバは、ブロック506において、そのコンピューティングデバイスに報告アプリケーションを関連付けてよい。一実施形態では、ジオフェンスサーバは、図1を参照しながら上記で説明したように、報告アプリケーションとジオフェンス情報データベース116の中のコンピューティングデバイスとの間の関連付けを記録することによってこの動作を行う。
ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスの現在位置を決定することによって、図4Aを参照しながら上記で説明した方法400のブロック408におけるプロセスの実行を続けてよい。
図6は、混合するのに好適なまたは混合することに適合性がある(すなわち、アプリケーションまたはジオフェンスの機能または動作を大幅に劣化させずにジオフェンスが混合され得る)複数のジオフェンスが現在位置にあると決定することに応答して、混合ジオフェンスを報告アプリケーションへ送るために、ジオフェンスサーバ上で実施され得る具現方法600を示す。方法600の動作は、図4Aを参照しながら上記で説明した方法400の動作の一実施形態を実施する。したがって、ジオフェンスサーバは、図4Aを参照しながら上記で説明した方法400のブロック414においてコンピューティングデバイスの現在位置に存在する地理的に近いジオフェンスを決定した後、方法600の実行を開始してよい。
決定ブロック602において、ジオフェンスサーバが、地理的に近い複数のジオフェンスが現在位置にあるかどうかを決定し得る。一実施形態では、ジオフェンスサーバは、混合ジオフェンスを生成するために、重複するかまたはほとんど重複する(すなわち、地理的に近い)少なくとも2つのジオフェンスが現在位置にあることを必要とし得る。たとえば、コンピューティングデバイスが4つのジオフェンス対応アプリケーションを含むことがありながら、それらのジオフェンス対応アプリケーションのうちの1つしかコンピューティングデバイスの現在のエリアにおいてジオフェンスを有しないことがある。この例では、現在位置に1つのジオフェンスしかないので、ジオフェンスサーバは混合ジオフェンスを生成できないことがある。
地理的に近い複数のジオフェンスが現在位置にないとジオフェンスサーバが決定するとき(すなわち、決定ブロック602=「No」)、ジオフェンスサーバは、ブロック614において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。一実施形態では、ジオフェンスサーバは、図2を参照しながら上記で説明したように、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。したがって、一例では、報告アプリケーションは、報告アプリケーションの開発者によって最初に規定されたようなジオフェンスを受信することがある。ジオフェンスサーバは、ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、図4Aを参照しながら上記で説明した方法400のブロック402に戻る継続的なループの中で、本具現プロセスを実行してよい。
地理的に近い複数のジオフェンスが現在位置にあるとジオフェンスサーバが決定するとき(すなわち、決定ブロック602=「Yes」)、ジオフェンスサーバは、ブロック604において、地理的に近い複数のジオフェンスのうちのどれが混合するのに好適であるかを決定し得る。一実施形態では、ジオフェンスサーバは、地理的に近いジオフェンスの各々を詳細に調べて、地理的に近いジオフェンスが互いに混合され得るかどうかを決定し得る。ジオフェンスサーバは、個々のジオフェンス特性(たとえば、特定のジオフェンスが決して混合されないこと、またはいくつかの条件下でのみ混合されることを、報告アプリケーションの開発者が要求しているどうか)、全体として地理的に近い複数のジオフェンス、ならびにジオフェンス、それらのジオフェンスに関連するジオフェンス対応アプリケーション、およびそれらのジオフェンス対応アプリケーションの開発者を取り巻く様々な他の情報に注目してよい。
一実施形態では、地理的に近いジオフェンスが混合するのに好適であるかどうかを、ジオフェンスサーバがジオフェンスの形状に基づいて決定し得る。たとえば、ジオフェンスサーバは、ジオフェンスの形状のうちの2つ以上が、混合することに対して「適合性がある」かどうかを評価するために、地理的に近いジオフェンスの形状分析を実行し得る。一実施形態では、関連するジオフェンスアプリケーションの性能、機能、または応答性に相当な影響なくジオフェンスサーバがジオフェンス形状を結合できるとき、ジオフェンス形状は混合するのに好適であり得る。言い換えれば、2つ以上のジオフェンスを混合することが、その下にあるジオフェンス対応アプリケーションのロケーションベースサービスを大幅に劣化させる混合ジオフェンスをもたらすことになるかどうかを、ジオフェンスサーバが決定し得る。たとえば、それらのジオフェンスを結合することは、円形または正方形のいずれかのジオフェンスよりも著しく大きいことになる、または元のジオフェンスによってカバーされるいくつかのエリアを除外するような方法で成型されることになる、単一の混合ジオフェンスを生成することがあるので、かろうじて重複する円形のジオフェンスおよび正方形のジオフェンスは適合性がない場合があることをジオフェンスサーバは決定し得る。別の実施形態では、得られた混合ジオフェンスが元のジオフェンスのサイズに基づくサイズしきい値を上回り(たとえば、混合ジオフェンスが、元のジオフェンスの結合されたエリアの150%よりも大きくてはいけない)、かつ/または元のジオフェンスによってカバーされるエリアに基づくエリアカバーしきい値(area-covered threshold)を上回らないとき(たとえば、混合ジオフェンスが、元のジオフェンスのエリアのうちの少なくとも85%をカバーする必要がある場合がある)、形状が混合するのに好適ではないとジオフェンスサーバは決定してよい。
一実施形態では、ジオフェンスサーバは、ジオフェンスが混合するのに好適であるかどうかを決定するために、ジオフェンスメタデータを参照してよい。ジオフェンスサーバは、ジオフェンスの各々のタイプ(たとえば、歩行ジオフェンス、ドライブジオフェンス、ビジネスジオフェンス、商業ジオフェンスなど)を決定し得、適合性があるタイプを有するジオフェンスのみを結合してよい。言い換えれば、ジオフェンスサーバは、それらを結合することによってロケーションベースサービスのターゲット/目的が大幅に劣化されないときのみ、ジオフェンスを混合してよい。たとえば、モールの中の店舗における毎日の商取引について歩行者の注意を喚起するように設計されたジオフェンスは、自動車修理工場のオイル交換の特別料金についてモールのそばを通過する運転手の注意を喚起するように設計されたジオフェンスと適合性がないことがある。
別の実施形態では、地理的に近いジオフェンスが混合するのに好適であるかどうかを、ジオフェンスサーバが開発者設定の特性/パラメータに基づいて決定し得る。アプリケーションに対してジオフェンスを規定するプロセス中に、開発者は、ジオフェンスが別のジオフェンスと混合され得ないことを指定してよい。たとえば、決勝線においてジオフェンスを有する長距離競走アプリケーション向けなど、ジオフェンスに対する開発者の目標を達成するために開発者が最高精度を必要とする場合がある。そのような例では、混合する結果としてジオフェンスのエリア/精度が変化する場合、ジオフェンスの目的(たとえば、ユーザが長距離競走を走り終えたときを自動的に示すこと)を阻止することがある。一実施形態では、ジオフェンスサーバは、開発者が特定のジオフェンスの混合を許可しているかどうかを示す開発者フラグまたは別の値を検査し得る。
決定ブロック606において、ジオフェンスサーバは、混合するのに好適な複数のジオフェンスが、地理的に近い複数のジオフェンスの中にあるかどうかを決定し得る。たとえば、地理的に近いいくつかのジオフェンスがコンピューティングデバイスの現在のエリアにあり得るが、適合性がない形状、タイプなどのために、それらのいずれも混合するのに好適でないことがある。
適合性があるジオフェンスが地理的に近い複数のジオフェンスの中にないとジオフェンスサーバが決定するとき(すなわち、決定ブロック606=「No」)、ジオフェンスサーバは、ブロック614において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。上記で説明したように、ジオフェンスサーバがジオフェンスを結合しないとき、ジオフェンスサーバは、報告アプリケーションの開発者によって最初に規定されたジオフェンスに対して、更新されたジオフェンスを送らなくてよい。ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、ジオフェンスサーバは、ブロック402に戻る継続的なループの中で本具現プロセスを実行してよい。
適合性があるジオフェンスが地理的に近い複数のジオフェンスの中にあるとジオフェンスサーバが決定するとき(すなわち、決定ブロック606=「Yes」)、ジオフェンスサーバは、ブロック608において、混合するのに好適な複数のジオフェンスを結合して混合ジオフェンスにしてよい。一実施形態では、ジオフェンスサーバは、図4Aを参照しながら上記で説明した方法400のブロック416において上記で説明したプロセスと同様の方法で、適合性がある複数のジオフェンスを結合して混合ジオフェンスにしてよい。たとえば、ジオフェンスサーバは、適合性がある複数のジオフェンスの形状の重み付き平均をとってよく、重み付き平均に基づいて単一のジオフェンスを生成してよい。
随意のブロック610において、ジオフェンスサーバは、適合性がある複数のジオフェンスに関連するジオフェンス対応アプリケーションへ混合ジオフェンスを送ってよい。一実施形態では、ジオフェンスサーバは、それらのアプリケーションが混合ジオフェンスの監視を即時に開始できるようにするために、混合するのに好適な複数のジオフェンスに関連するジオフェンス対応アプリケーションに、混合ジオフェンスを先制してプッシュしてよい。したがって、ジオフェンスサーバは、ジオフェンス横断通知をそれらのアプリケーションの各々から受信することに応答して、それらのジオフェンス対応アプリケーションへ混合ジオフェンスを送る必要を回避し得る。
決定ブロック612において、ジオフェンスサーバは、報告アプリケーションのジオフェンスが混合するのに好適であるかどうかを決定し得る。言い換えれば、ジオフェンスサーバは、決定ブロック606を参照しながら上記で説明したように、報告アプリケーションのジオフェンスが混合するのに好適な複数のジオフェンスに含まれるかどうかを決定し得る。
報告アプリケーションのジオフェンスが混合するのに好適でないとジオフェンスサーバが決定するとき(すなわち、決定ブロック612=「No」)、ジオフェンスサーバは、ブロック614において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。一実施形態では、ジオフェンスサーバは、報告アプリケーションのジオフェンスに対して更新されたジオフェンス情報だけを送ってよい。ジオフェンスサーバは、ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、図4Aを参照しながら上記で説明した方法400のブロック402に戻る継続的なループの中で、本具現プロセスを実行してよい。
報告アプリケーションのジオフェンスが混合するのに好適であるとジオフェンスサーバが決定するとき(すなわち、決定ブロック612=「Yes」)、ジオフェンスサーバは、図4Aを参照しながら上記で説明したようなブロック418において、混合ジオフェンスを報告アプリケーションへ送ってよい。ジオフェンスサーバはまた、ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、図4Aを参照しながら上記で説明した方法400のブロック402に戻る継続的なループの中で、本具現プロセスを実行してよい。
図7Aおよび図7Bは、混合ジオフェンスを生成し、混合ジオフェンスを後で使用できるように記憶するために、ジオフェンスサーバ上で実施され得る具現方法700を示す。方法700の動作は、図4Aを参照しながら上記で説明した方法400の動作の一実施形態を実施する。したがって、ジオフェンスサーバは、図4Aを参照しながら上記で説明した方法400のブロック414においてジオフェンスが報告アプリケーションのコンピューティングデバイスの現在位置に地理的に近いと決定した後、方法700の実行を開始してよい。
図7Aを参照すると、決定ブロック702において、ジオフェンスサーバは、報告アプリケーションのコンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するかどうかを決定し得る。一実施形態では、ジオフェンスサーバは、他のジオフェンス対応アプリケーションによって後で使用できるように、前に生成された混合ジオフェンスを特定のエリアに関連付けてよい。言い換えれば、様々なコンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションのための特定のエリアに対して同じ混合ジオフェンスを生成するのではなく、ジオフェンスサーバは、ブロック706および708を参照しながら以下でさらに説明するように、前に生成された混合ジオフェンスを保持してよく、ジオフェンスサーバは、いつも白紙の状態から混合ジオフェンスを生成する必要なく、同じコンピューティングデバイス上の他のジオフェンス対応アプリケーションへ混合ジオフェンスを送ってよい。
報告アプリケーションのコンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するとジオフェンスサーバが決定するとき(すなわち、決定ブロック702=「Yes」)、プロセスは、図7Bを参照しながら以下で説明するブロック722における動作を実行してよい。
報告アプリケーションのコンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連しないとジオフェンスサーバが決定するとき(すなわち、決定ブロック702=「No」)、ジオフェンスサーバは、図4Aを参照しながら上記で説明したブロック416において、現在位置に地理的に近いジオフェンスを結合して混合ジオフェンスにしてよい。
ブロック706において、ジオフェンスサーバは、混合ジオフェンスを記憶し得る。一実施形態では、ジオフェンスサーバは、混合ジオフェンス、ならびに混合ジオフェンスに関連するアプリケーションおよびジオフェンスの識別子を、ジオフェンス情報データベース116などのジオフェンス情報データベースに記憶してよい。ブロック708において、ジオフェンスサーバは、混合ジオフェンスを報告アプリケーションのコンピューティングデバイスの現在位置に関連付けてよい。したがって、決定ブロック702を参照しながら上記で説明したように、ジオフェンスサーバは、将来、現在位置においてジオフェンスを再混合する必要なく、記憶された混合ジオフェンスを呼び戻して他のジオフェンス対応アプリケーションへ送ることができる場合がある。一実施形態では、図7Bを参照しながら以下でさらに説明するように、記憶された各混合ジオフェンスは、報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーションとジオフェンスの特定の組合せに関連付けられてよい。
ブロック418において、ジオフェンスサーバは、図4Aを参照しながら上記で説明したように、混合ジオフェンスを報告アプリケーションへ送ってよい。ジオフェンスサーバは、ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、図4Aを参照しながら上記で説明した方法400のブロック402における動作を実行することに戻る継続的なループの中で、本具現プロセスを実行してよい。
図7Bを参照すると、報告アプリケーションのコンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するとジオフェンスサーバが決定するとき(すなわち、決定ブロック702=「Yes」)、ジオフェンスサーバは、ブロック722において、記憶された混合ジオフェンスに関連するジオフェンス対応アプリケーションおよびジオフェンスのリストを生成してよい。上記で説明したように、記憶された混合ジオフェンスは、ジオフェンスアプリケーションとそれらのそれぞれのジオフェンスの特定の組合せに関連付けられてよい。
一実施形態では、記憶された混合ジオフェンスが、報告アプリケーションのコンピューティングデバイスの現在位置における地理的に近いジオフェンスに対して生成される混合ジオフェンスを、場合によっては正確に表さない場合があるので、記憶された混合ジオフェンスは、完全な一致があるときのみ、報告アプリケーションのコンピューティングデバイスで使用するのに好適であり得る。たとえば、コンピューティングデバイスが、ジオフェンス対応アプリケーションAおよびBのみを含み、ならびに現在位置においてジオフェンス1および2のみを含むとき、ジオフェンス対応アプリケーションA、B、およびC、ならびにジオフェンス1、2、および3を表す記憶された混合ジオフェンスは、報告アプリケーションのコンピューティングデバイス上のロケーションベースサービスの精度を著しく劣化させることがある。別の例では、記憶された混合アプリケーションが、ジオフェンス対応アプリケーションA、B、およびC、ならびにジオフェンス1、2、および3を含むことがあるが、報告アプリケーションのコンピューティングデバイスは、ジオフェンス対応アプリケーションA、B、C、およびD、ならびにジオフェンス1、2、3、4、および5を含むことがある。したがって、この例では、記憶された混合ジオフェンスは、ジオフェンス対応アプリケーションD、ならびにジオフェンス4および5を正確に表さないことがあり、そのことはまた、報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーション向けのロケーションベースサービスの精度に大幅に影響を及ぼし得る。
したがって、決定ブロック724において、ジオフェンスサーバは、リストの中のジオフェンス対応アプリケーションおよびジオフェンスと、報告アプリケーションのコンピューティングデバイスに現在関連付けられているジオフェンス対応アプリケーションおよび地理的に近いジオフェンスとの間に、完全な一致があるかどうかを決定し得る。一実施形態では、ジオフェンスサーバは、リストの中のジオフェンス対応アプリケーションを、図4Aを参照しながら説明した方法400のブロック410において報告アプリケーションのコンピューティングデバイスに現在関連付けられていると決定されたジオフェンス対応アプリケーションと比較することによって、この動作を行ってよい。同様に、ジオフェンスサーバは、リストの中のジオフェンスを、図4Aを参照しながら上記で説明した方法400のブロック414における動作中に地理的に近いと決定されたジオフェンスと比較してよい。
完全な一致がないとジオフェンスサーバが決定するとき(すなわち、決定ブロック724=「No」)、ジオフェンスサーバは、図6を参照しながら上記で説明した方法600のブロック614において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。言い換えれば、たとえ報告アプリケーションのコンピューティングデバイスの現在位置に関連する混合ジオフェンスがあっても、記憶された混合ジオフェンスが、上記で説明したように報告アプリケーションのコンピューティングデバイス上のジオフェンス対応アプリケーションによって使用するのに好適でないことがあるので、報告アプリケーションのコンピューティングデバイスに関連するジオフェンス対応アプリケーションおよびジオフェンスと、リストの中に含まれるそれらとの間に完全な一致がないとき、報告アプリケーションは混合ジオフェンスを受信しないことがある。したがって、混合ジオフェンスを送る代わりに、ジオフェンスサーバは、報告アプリケーションの開発者によって最初に規定されたような報告アプリケーションのジオフェンスに対する更新情報を送ってよい。
完全な一致があるとジオフェンスサーバが決定するとき(すなわち、決定ブロック724=「Yes」)、ジオフェンスサーバは、ブロック728において、記憶された混合ジオフェンスを報告アプリケーションへ送ってよい。混合ジオフェンス情報または非混合ジオフェンス情報を報告アプリケーションへ送った後、ジオフェンスサーバが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンスサーバが継続的に監視するように、ジオフェンスサーバは、図4Aを参照しながら上記で説明したようにブロック402における動作を実行することによって、継続的なループの中で方法400の具現プロセスを実行してよい。
さらなる実施形態では、コンピューティングデバイスは、混合ジオフェンスを管理しかつ/または混合ジオフェンスをコンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションへ送るように構成され得るジオフェンス管理ユニットを含み得る。
一実施形態では、コンピューティングデバイス上の他のジオフェンスアプリケーションに代わってプロキシジオフェンスサーバとして働くために、ジオフェンス管理ユニットがコンピューティングデバイス上で実行し得る。この実施形態では、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションの各々に関するジオフェンスパラメータ情報を、アプリケーション自体から、またはジオフェンスサーバから受信し得る。ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションのジオフェンスを結合して単一の混合ジオフェンスにしてよい。
別の実施形態では、ジオフェンス管理ユニットは、混合ジオフェンスが合致されるときを検出するためにコンピューティングデバイスの場所を監視し得、そうであるとき、混合ジオフェンスが横断されたという通知を、コンピューティングデバイス上の各アプリケーションにほぼ同時に送ってよい。このことにより、各アプリケーションは、そのジオフェンスが横断されるとそれらが決定したかのように独立に働くことが可能になり得る。同じ時間にアプリケーションに通知されるので、位置検出無線の使用が最小限に抑えられ、アプリケーションのすべてをサポートするためにジオフェンスサーバへの単一の接続が確立されてよい。代替実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上のジオフェンス対応アプリケーションの各々へ混合ジオフェンスを送ってよく、そうしたジオフェンス対応アプリケーションの各々は、次いで、それらが再描画されたジオフェンスをジオフェンスサーバから受信したかのように上記で説明したように動作し得る。
図8は、1つまたは複数のジオフェンス対応アプリケーションのジオフェンスを管理および混合する際に使用するための、ジオフェンス管理ユニット812を含む具現コンピューティングデバイス800の構成要素ブロック図である。
一実施形態では、コンピューティングデバイス800は、プロセッサ802を含み得る。プロセッサ802は、マルチコアホストプロセッサであってよく、プロセッサ802は、アプリケーションおよび/またはそのようなアプリケーションを管理するためのオペレーティングシステムを実行することができる様々なプログラマブルプロセッサのいずれかであってよい。たとえば、プロセッサ802は、ハイレベルオペレーティングシステム(すなわち、OS806)を永続的に実行し得、コンピューティングデバイス800の構成要素およびソフトウェアを利用するための数多くのルーチンを実行し得る。プロセッサ802はまた、外部メモリおよび/またはオンチップメモリであってよいメモリ構成要素804内にデータを記憶し得、そこからデータを取り出し得る。
別の実施形態では、1つまたは複数のジオフェンス対応アプリケーション808は、OS806の上部で動作し得、プロセッサ802によって実行され得る。ジオフェンス対応アプリケーション808は、様々な技法を使用してコンピューティングデバイス800の現在位置を決定し得る。たとえば、ジオフェンス対応アプリケーション808は、コンピューティングデバイス800の現在位置を随意のGPS受信機810から受信し得る。別の例では、ジオフェンス対応アプリケーション808は、複数のWi-Fiアクセスポイント、Bluetoothビーコン、セルサイト、基地局などからの信号を受信するための無線周波数トランシーバ814および1つまたは複数のアンテナ816を利用することなどによって、様々な局所的測位システムを使用してコンピューティングデバイス800の現在位置を決定し得る。別の実施形態では、ジオフェンス対応アプリケーションは、GPSと様々な局所的測位システムの両方を利用してよい。
別の実施形態では、コンピューティングデバイス800は、ジオフェンス対応アプリケーション808用のジオフェンスを管理および/または混合するように構成されたジオフェンス管理ユニット812を含み得る。ジオフェンス管理ユニット812は、ジオフェンス対応アプリケーション808またはジオフェンスサーバ(図示せず)のいずれかから、ジオフェンス対応アプリケーションのジオフェンスに関する情報を受信し得る。ジオフェンス管理ユニット812はまた、上記で説明したようなジオフェンスサーバに起因すると考えられるものと同じかまたは類似のジオフェンスを混合する方法を使用して、現在位置において重複しかつ/または極近傍にあるジオフェンス対応アプリケーション808のジオフェンスを結合し得る。
別の実施形態では、ジオフェンス管理ユニット812は、上記で説明したように(たとえば、GPSおよび/または局所的測位システムを使用して)コンピューティングデバイス800の現在位置を決定し得、ジオフェンス対応アプリケーション808が同時またはほぼ同時にジオフェンスサーバと通信し得るように、混合ジオフェンスが横断されたときについてジオフェンス対応アプリケーション808の注意を一度に喚起し得る。代替実施形態では、ジオフェンス管理ユニット812は、ジオフェンス対応アプリケーション808とジオフェンスサーバとの間の仲介物として働くように構成され得る。そのような実施形態では、ジオフェンス管理ユニット812は、ジオフェンス対応アプリケーション808に代わって、ジオフェンス対応アプリケーション808用のジオフェンス情報をジオフェンスサーバから受信し得、ジオフェンスを結合して単一の混合ジオフェンスにしてよく、混合ジオフェンスが横断されるまでコンピューティングデバイス800の現在位置を監視してよく、ジオフェンスサーバにジオフェンス横断を通知してよく、更新されたジオフェンス情報をジオフェンスサーバから受信し得る。
ジオフェンス管理ユニット812は、コンピューティングデバイス800に含まれる別個の構成要素として図8に示されるが、ジオフェンス管理ユニットは、様々な方法でコンピューティングデバイス800に実装され得る。たとえば、ジオフェンス管理ユニット812は、OS806の上部で実行するジオフェンス対応アプリケーション808またはスタンドアロンのプログラムのうちの1つであってよく、コンピューティングデバイス800に含まれるプロセッサ(たとえば、プロセッサ802)によって実行されてよい。別の例では、ジオフェンス管理ユニットは、バックグラウンドのプロセスまたはサービスなどの、OS806の一部として実装されてよい。別の例では、ジオフェンス管理ユニットは、プロセッサ802または随意のGPS受信機810に含まれる論理回路などのハードウェアで実装されてよい。しかしながら、それが実装される特定の方式に関わらず、ジオフェンス管理ユニット812が同じ容量で機能し得ることが期待される。
さらに、説明しやすいように、ジオフェンス管理ユニットは、以下で説明する具現方法のうちの1つまたは複数の、1つまたは複数の動作を実行することとして説明される場合がある。しかしながら、ジオフェンス管理ユニットがソフトウェアで実装される実施形態では、そのような動作がジオフェンス管理ユニットソフトウェアを実行するコンピューティングデバイスプロセッサ(たとえば、プロセッサ802)によって実行されてよいことを理解されたい。
コンピューティングデバイス800に含まれ得る他の構成要素が、図16を参照しながら以下でさらに説明される。
図9Aおよび図9Bは、デバイス上で局所的に混合ジオフェンスを生成するために、コンピューティングデバイス上のジオフェンス管理ユニットを実行するプロセッサによって実行され得る具現方法900、920を示す。
図4Aおよび4Bを参照しながら上記で説明したように、説明しやすいように、図9A〜図15Cを参照しながら以下で説明するものなどの様々な実施形態は、コンピューティングデバイスの現在位置を含む、またはそれに依存する動作を含み得る。しかしながら、コンピューティングデバイスの現在位置へのいかなる参照または依存性も、特許請求の範囲に明示的に記載されない限り、特許請求の範囲を限定するものではない。
図9Aは、同じコンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションを管理するために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法900を示す。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイスの現在位置における重複するまたはすぐ近くのジオフェンスを結合して、コンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションへジオフェンス管理ユニットが送り得る単一の混合ジオフェンスにしてよい。
ブロック902において、ジオフェンス管理ユニットが、コンピューティングデバイス上で実行する複数のジオフェンス対応アプリケーションを識別し得る。一実施形態では、各ジオフェンス対応アプリケーションがジオフェンス管理ユニットに登録し得る。たとえば、各ジオフェンス対応アプリケーションは、その識別情報(たとえば、アプリケーションID、ジオフェンスサーバIDなど)をジオフェンス管理ユニットへ送るようにジオフェンス対応アプリケーションを構成する命令を含んでよい。
ブロック904において、ジオフェンス管理ユニットは、コンピューティングデバイスの現在位置を決定し得る。一実施形態では、ジオフェンス管理ユニットは、上記で説明したようにコンピューティングデバイスの現在位置を決定するために、コンピューティングデバイスのGPS受信機および/またはコンピューティングデバイス上の様々な局所的測位構成要素を利用し得る。
ブロック906において、ジオフェンス管理ユニットは、識別されたジオフェンス対応アプリケーションごとに、現在位置におけるジオフェンスに関する情報を取得し得る。一実施形態では、ジオフェンス管理ユニットは、ジオフェンスサーバと通信してよく、コンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションに関連するジオフェンスを要求してよい。別の実施形態では、ジオフェンス管理ユニットは、ジオフェンス情報を複数のジオフェンス対応アプリケーションに要求してよく、そうしたジオフェンス対応アプリケーションは、そのようなジオフェンス情報をジオフェンスサーバから受信し得る。別の実施形態では、複数のジオフェンス対応アプリケーション用のジオフェンス情報は、ジオフェンスの形状、外周、地理的位置、およびサイズに関する情報を含み得る。
ブロック908において、ジオフェンス管理ユニットは、現在位置における地理的に近いジオフェンスをジオフェンス情報に基づいて決定し得る。一実施形態では、ジオフェンスサーバを参照しながら上記で説明したように、ジオフェンス管理ユニットは、様々な計算を実行して、コンピューティングデバイス上のジオフェンス対応アプリケーション用のジオフェンスが重複するか、かつ/または極近傍にあるかどうかを決定し得る。たとえば、ジオフェンス管理ユニットは、コンピューティングデバイスの現在のエリアにおけるジオフェンスの各々のエリアおよび/または外周を決定し得、重複するかまたはほとんど重複するエリアおよび/または外周を複数のジオフェンスが有するかどうかを決定し得る。
ブロック910において、ジオフェンス管理ユニットは、現在位置における地理的に近いジオフェンスを結合して混合ジオフェンスにしてよい。ジオフェンス管理ユニットは、ジオフェンスを結合するための様々な技法を実施し得る。たとえば、ジオフェンス管理ユニットは、別個の重複ジオフェンスの各々を取り囲む混合ジオフェンス、または中心をもつ形状のジオフェンスをジオフェンスの形状の重み付き平均を使用して表す混合ジオフェンスを生成し得る。ジオフェンスを結合して混合ジオフェンスにすることが、図15A〜図15Cを参照しながら以下でさらに説明される。
ブロック912において、ジオフェンス管理ユニットは、混合ジオフェンスに含まれるジオフェンスに関連する識別されたジオフェンス対応アプリケーションの各々へ混合ジオフェンスを送ってよい。たとえば、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションの各々が混合ジオフェンスを監視することを可能にし得る、混合ジオフェンスに関する情報を送ってよい。その結果、複数のジオフェンス対応アプリケーションは、混合ジオフェンスが横断されるときを認識するための位置検出無線の出力を同じ時間に利用し得、複数のジオフェンス対応アプリケーションの各々は、同じまたはほぼ同じ時間にジオフェンスサーバと通信し得る。
決定ブロック914において、ジオフェンス管理ユニットは、現在位置が変化したかどうかを決定し得る。一実施形態では、異なるジオフェンスがあり得る異なる位置にコンピューティングデバイスが移動したかどうかを、ジオフェンス管理ユニットは周期的に検査してよい。たとえば、モールの位置から駐車場の位置へコンピューティングデバイスが移動したかどうかを、ジオフェンス管理ユニットは決定してよい。
現在位置が変化していないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック914=「No」)、ジオフェンス管理ユニットは、現在位置が変化したときを認識するための決定ブロック914におけるプロセスを継続的に反復してよい。現在位置が変化したとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック914=「Yes」)、ジオフェンス管理ユニットは、ジオフェンス管理ユニットがブロック904においてコンピューティングデバイスの現在位置を決定することを続け得るようなループの中で、このプロセスを実行し続けてよい。
さらなる実施形態では、ジオフェンス管理ユニットは、単一のジオフェンス対応アプリケーションにとって地理的に近い複数のジオフェンスを結合して混合ジオフェンスにするために、上記で説明した動作を実行してよく、それによって、単一のジオフェンス対応アプリケーションが複数の個々のジオフェンスではなく単一の混合ジオフェンスを監視することを可能にする。
図9Bは、コンピューティングデバイス上のジオフェンス対応アプリケーション用のジオフェンスの地理的に近いグループを混合するために、コンピューティングデバイス上のジオフェンス管理ユニットを実行するプロセッサによって実施され得る具現方法920を示す。一実施形態では、コンピューティングデバイスプロセッサは、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションに関連する地理的に近いジオフェンスを、先制して一緒にグループ化してよく、それらのアプリケーションのうちの1つまたは複数によって、またはそのジオフェンスが混合ジオフェンスの中で取り囲まれているアプリケーションに代わって混合ジオフェンスを監視するジオフェンス管理ユニットによって使用するために、プロセッサは、近いジオフェンスとしてのそれらのグループの各々を結合して混合ジオフェンスにしてよい。
別の実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションにとって利用可能なすべての可能な混合ジオフェンスを周期的に(たとえば、毎晩または毎週)作成および記憶してよい。したがって、さらなる実施形態では、単独で、またはジオフェンス横断通知もしくはジオフェンス情報を得るための別の要求をコンピューティングデバイス上のアプリケーションから受信することに応答して、ジオフェンス管理ユニットを実行するプロセッサは、コンピューティングデバイス上のジオフェンス対応アプリケーションに関連する記憶された混合ジオフェンスに迅速にアクセスし得、記憶された混合ジオフェンスをそのアプリケーションへ送ってよい。言い換えれば、ジオフェンス管理ユニットを実行するプロセッサは、アプリケーション用に事前に生成された混合ジオフェンスを準備してよく、事前に作られたそれらの混合ジオフェンスを必要または要求に応じてアプリケーションへ送ってよい。
ブロック902において、ジオフェンス管理ユニットを実行するプロセッサが、図9Aを参照しながら上記で説明したように、デバイス上で実行するジオフェンス対応アプリケーションを識別し得る。ジオフェンス管理ユニットを実行するプロセッサはまた、ブロック924において、アプリケーションについてのジオフェンス情報をジオフェンスサーバに要求すること、またはジオフェンス情報を直接アプリケーションに要求することなどによって、識別されたジオフェンス対応アプリケーションに関連するジオフェンスに関する情報を取得し得る。一実施形態では、ジオフェンス管理ユニットを実行するプロセッサはまた、モバイルデバイスからいくらかの距離内のジオフェンスに関する情報、または特定のエリア(たとえば、州または地域の何らかの部分)に関連するジオフェンスに関する情報を取得し得る。別の実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、それらの位置に関わらず、ジオフェンスに関する情報を受信し得る。
ブロック926において、ジオフェンス管理ユニットを実行するプロセッサは、互いに地理的に近い識別されたジオフェンス対応アプリケーションに関連するジオフェンスを、ジオフェンス情報に基づいて決定し得る。上記で概して説明したように、ジオフェンスは、それらの外周が互いからいくらかの距離内にあるとき、またはそれらのエリアがある程度の重複を有するとき、互いに地理的に近くあり得る。ブロック928において、ジオフェンス管理ユニットを実行するプロセッサは、ブロック926において地理的に近いと決定されたそれらのジオフェンスをグループ化し得る。
ブロック930において、ジオフェンス管理ユニットを実行するプロセッサは、ジオフェンスのグループごとに、各グループの中のジオフェンスを結合することによって混合ジオフェンスを生成し得る。一実施形態では、ブロック930の動作を実行することによって、ジオフェンス管理ユニットを実行するプロセッサは、コンピューティングデバイス上のジオフェンス対応アプリケーションに利用可能なあらゆる可能な混合ジオフェンス(または、可能な混合ジオフェンスの特定のサブセット)を生成し得る。ブロック932において、ジオフェンス管理ユニットを実行するプロセッサはまた、ブロック930において生成されている各混合ジオフェンスを、後で使用できるように記憶し得る。
随意の実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、随意のブロック938において、いくらかの時間期間だけ待機してよく、ブロック924において開始する上記で説明した動作を反復してよい。言い換えれば、ジオフェンス管理ユニットを実行するプロセッサは、記憶されている混合ジオフェンスが最新であることを確実にするために、いくらかの時間期間が経過した後、上記の動作を周期的に反復してよい。
上記の動作と同時にまたはその後に行われ得るさらなる実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、随意のブロック934において、更新されたジオフェンス情報を得るための要求(たとえば、ジオフェンス横断通知)をジオフェンス対応アプリケーションから受信し得る。ジオフェンス管理ユニットを実行するプロセッサはまた、随意のブロック936において、ジオフェンス対応アプリケーションに関連する記憶された混合ジオフェンスを、そのアプリケーションへ送ってよい。たとえば、ジオフェンス管理ユニットを実行するプロセッサは、ブロック930において上記で説明したように混合ジオフェンスを形成するために使用された1つまたは複数のジオフェンスに関連するジオフェンス対応アプリケーションへ、記憶された混合ジオフェンスを送ってよい。プロセッサは、随意のブロック934において開始するループの中で上記の動作を反復してよい。
したがって、一実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、ブロック932において、混合ジオフェンスをメモリに記憶し得、随意のブロック936において、混合ジオフェンスをジオフェンス対応アプリケーションへ必要に応じて(たとえば、図12を参照しながら以下で概して説明するように、報告アプリケーションからの報告通知に応答して)送ってよい。随意のブロック936の動作の別の実施形態では、ジオフェンス管理ユニットを実行するプロセッサは、それらのアプリケーションが混合ジオフェンスの監視を即時に開始できるようにするために、コンピューティングデバイス上のジオフェンス対応アプリケーションに、記憶された混合ジオフェンスを(たとえば、「プッシュ」動作で)先制して送ってよい。さらなる実施形態(図示せず)では、ジオフェンス管理ユニットは、そのジオフェンスが混合ジオフェンスの中で取り囲まれているアプリケーションに代わって、記憶された混合ジオフェンスを監視してよく、記憶された混合ジオフェンスが横断されたとき、それらのアプリケーションに合図してよい。
図10Aは、コンピューティングデバイスが混合ジオフェンスを横断したときをコンピューティングデバイス上で動作しているジオフェンス対応アプリケーションに通知するために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1000を示す。一実施形態では、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションに代わって、混合ジオフェンスを生成すること、混合ジオフェンスを監視すること、および混合ジオフェンスが横断されるときをジオフェンスサーバに通知することによって、ジオフェンス対応アプリケーションとジオフェンスサーバとの間の仲介物として働き得る。
一実施形態では、方法1000の動作は、図9Aを参照しながら上記で説明した方法900のブロック912の動作の一実施形態を実施する。したがって、一実施形態では、ジオフェンス管理ユニットは、図9Aを参照しながら上記で説明した方法900のブロック910において現在位置における重複するまたはほぼ重複するジオフェンスを結合して混合ジオフェンスにした後、方法1000の実行を開始してよい。
随意の決定ブロック1002において、ジオフェンス管理ユニットは、現在位置が変化したかどうかを決定し得る。言い換えれば、ジオフェンス管理ユニットは、コンピューティングデバイスの現在位置を前に決定された位置と比較して、コンピューティングデバイスが移動したかどうかを決定してよい。別の実施形態では、コンピューティングデバイスがいくらかのしきい値距離だけ移動したとき、ジオフェンス管理ユニットは現在位置が変化したと決定してよい。
現在位置が変化したとジオフェンス管理ユニットが決定するとき(すなわち、随意の決定ブロック1002=「Yes」)、ジオフェンス管理ユニットは、コンピューティングデバイスの現在位置を決定することによって、図9Aを参照しながら上記で説明した方法900のブロック904におけるプロセスの実行を続けてよい。一実施形態では、各位置は、異なる場所における異なるジオフェンスを含んでよく、ジオフェンス管理ユニットは、そのエリアに対して混合ジオフェンスを生成するために、各位置におけるジオフェンスを異なって結合する必要があり得る。
現在位置が変化していないとジオフェンス管理ユニットが決定するとき(すなわち、随意の決定ブロック1002=「No」)、ジオフェンス管理ユニットは、ブロック1004において、混合ジオフェンスの横断を監視してよい。言い換えれば、ジオフェンス管理ユニットは、コンピューティングデバイスが混合ジオフェンスの境界線を横断したかどうかを監視してよい。
決定ブロック1006において、ジオフェンス管理ユニットは、コンピューティングデバイスが混合ジオフェンスを横断したかどうかを決定し得る。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイスが混合ジオフェンスを横断したかどうかを決定するために、GPSおよび/または局所的測位システム(たとえば、Wi-Fi、セルタワー信号など)を利用し得る。コンピューティングデバイスが混合ジオフェンスを横断していないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1006=「No」)、ジオフェンス管理ユニットは、随意の決定ブロック1002におけるプロセスの実行を続けてよい。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイスの現在位置が上記で説明したように変化したかどうかを頻繁に決定してよい。
コンピューティングデバイスが混合ジオフェンスを横断したとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1006=「Yes」)、ジオフェンス管理ユニットは、ブロック1007において、混合ジオフェンスに含まれるジオフェンスに関連する識別された複数のジオフェンス対応アプリケーションの各々に、混合ジオフェンスが横断されたことを通知してよい。ジオフェンス管理ユニットはまた、ブロック1008において、混合ジオフェンスに含まれるジオフェンスに関連するジオフェンス対応アプリケーションに代わって、混合ジオフェンスが横断されたことをジオフェンスサーバに通知してよい。一実施形態では、ジオフェンス管理ユニットは、複数のジオフェンス対応アプリケーションの各々の代わりに、ジオフェンス突破を監視するための責任を担ってよく、それによって、位置検出無線の使用を最小限に抑え、ジオフェンス管理ユニットは、複数のジオフェンス対応アプリケーションの各々の代わりに、混合ジオフェンスが横断されるときをジオフェンスサーバに告知し得る。さらなる実施形態では、ジオフェンス管理ユニットは、混合ジオフェンスが横断することをジオフェンスサーバに1つの通信の中で通知してよく、それによって、時間および/またはコンピューティングデバイス上のリソース(たとえば、電力)を節約する。
随意の決定ブロック1002においてジオフェンス管理ユニットが現在位置が変化したかどうかを決定することを続け得るようなループの中で、プロセスが継続してよい。
図10Bは、混合ジオフェンスが横断されたときをコンピューティングデバイス上で動作しているジオフェンス対応アプリケーションに通知するために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1020を示す。
一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイスのプロセッサ上で実行するアプリケーションであってよく、デバイスプロセッサ上で同じく実行する1つまたは複数のジオフェンス対応アプリケーションにとってプロキシサーバとして働く。そのような実施形態では、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、ジオフェンスサーバに混合ジオフェンスを要求してよく、ジオフェンス対応アプリケーションに代わってコンピューティングデバイスの現在位置を監視してよく、混合ジオフェンスに含まれるジオフェンスに関連するジオフェンス対応アプリケーションの各々に、混合ジオフェンスが横断されるときを通知してよい。
ブロック902において、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサが、図9Aを参照しながら上記で説明したように、デバイス上で実行するジオフェンス対応アプリケーションを識別し得る。ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、ブロック1022において、識別されたジオフェンス対応アプリケーションのリストをジオフェンスサーバへ送ってよい。一実施形態では、図4A〜図7Bを参照しながら上記で説明した様々な実施形態を参照しながら上記で概して説明したように、リストは、ジオフェンスサーバが、リストに記載されたジオフェンス対応アプリケーションに関連するジオフェンスを識別し、地理的に近い識別されたジオフェンスを決定し、地理的に近いそれらのジオフェンスに基づいて混合ジオフェンスを生成し、生成された混合ジオフェンスをコンピューティングデバイスへ送ることを可能にし得る。
随意の実施形態では、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、随意のブロック1024において、デバイスの現在位置を決定し得る。ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、随意のブロック1026において、デバイスの現在位置をジオフェンスサーバへ送ってよく、それによって、ジオフェンスサーバが、デバイスの現在位置に地理的に近いジオフェンス対応アプリケーションのジオフェンスに対して、混合ジオフェンスを生成することを可能にする。
ブロック1028において、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、リストに記載されたジオフェンス対応アプリケーションのうちの1つまたは複数に関連するジオフェンスを含む混合ジオフェンスを、ジオフェンスサーバから受信し得る。一実施形態では、混合ジオフェンスは、コンピューティングデバイスの現在位置に地理的に近いジオフェンスを含み得る。別の実施形態では、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、あらゆる可能な混合ジオフェンスまたは混合ジオフェンスの特定のサブセット(たとえば、特定の地理的な領域またはエリアのための混合ジオフェンス)を表す1つまたは複数の混合ジオフェンスを受信し得る。そのような実施形態では、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、コンピューティングデバイスの現在位置にとって重要な混合ジオフェンスを識別してよく、以下でさらに説明するように、その識別された(すなわち、重要な)混合ジオフェンスの監視を開始してよい。
ブロック1028においてジオフェンスサーバから混合ジオフェンスを受信した後、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、随意の決定ブロック1030において、更新された混合ジオフェンスが必要とされるかどうかを随意に決定し得る。たとえば、ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサは、混合ジオフェンスによってカバーされない別のエリアへコンピューティングデバイスが移動したので、ジオフェンスサーバから前に受信された混合ジオフェンスがもはや重要または有用でないと決定してよい。ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサが、更新された混合ジオフェンスが必要とされると決定するとき(すなわち、随意の決定ブロック1030=「Yes」)、プロセッサは、更新された混合ジオフェンスを要求するために、ブロック1022において開始する上記の動作を反復してよい。
ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサが、更新された混合ジオフェンスが必要とされないと決定するとき(すなわち、随意の決定ブロック1030=「No」)、プロセッサは、図10Aを参照しながら上記で説明したようなブロック1004において、混合ジオフェンスの横断を監視してよい。
ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサはまた、図10Aを参照しながら上記で説明したように決定ブロック1006において、コンピューティングデバイスが混合ジオフェンスを横断したかどうかを決定し得る。ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサが、コンピューティングデバイスが混合ジオフェンスを横断していないと決定するまで(すなわち、決定ブロック1006=「No」である間)、プロセッサは、随意の決定ブロック1030において開始する上記の動作を反復してよい。ジオフェンス管理ユニットを実行するコンピューティングデバイスプロセッサが、コンピューティングデバイスが混合ジオフェンスを横断したと決定するとき(すなわち、決定ブロック1006=「Yes」)、プロセッサは、図10Aを参照しながら上記でさらに説明したようにブロック1007において、混合ジオフェンスに含まれるジオフェンスに関連する識別されたジオフェンス対応アプリケーションの各々に、混合ジオフェンスが横断されたことを通知してよい。
図11は、コンピューティングデバイス上のジオフェンス対応アプリケーション用の適合性があるジオフェンスを結合するために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1100を示す。方法1100の動作は、図9Aを参照しながら上記で説明した方法900の動作の一実施形態を実施する。したがって、一実施形態では、ジオフェンス管理ユニットは、方法900のブロック908において現在位置における地理的に近いジオフェンスをジオフェンス情報に基づいて決定した後、方法1100の実行を開始してよい。
決定ブロック1102において、ジオフェンス管理ユニットは、地理的に近い複数のジオフェンスが現在位置にあるかどうかを決定し得る。言い換えれば、ジオフェンス管理ユニットは、現在位置における任意のジオフェンスを結合することが可能であるかどうかを決定してよい。たとえば、現在位置に1つのジオフェンスしかないか、または複数のジオフェンスが互いに近くないエリアにあるとき、ジオフェンス管理ユニットは、現在位置におけるジオフェンスを結合できないことがある。
地理的に近い複数のジオフェンスが現在位置にないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1102=「No」)、コンピューティングデバイスの現在位置が変化したかどうかをジオフェンス管理ユニットが決定するときの、図9Aを参照しながら上記で説明した方法900の決定ブロック914においてプロセスが継続してよい。
地理的に近い複数のジオフェンスが現在位置にあるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1102=「Yes」)、ジオフェンス管理ユニットは、ブロック1104において、地理的に近い複数のジオフェンスのうちのどれが混合するのに好適であるかを決定し得る。図6を参照しながら上記で説明した方法600でのブロック604を参照しながら上記で説明したように、重複するかつ/またはすぐ近くのジオフェンスは、それにもかかわらず様々な理由で混合するのに好適でないことがある。たとえば、ジオフェンスは、(たとえば、意図されたように機能するために高い度合いのロケーションベース精度を必要とするアプリケーションにとって)混合するのに適格であるとしてジオフェンスをマークする、開発者によって付加されたメタデータを含んでよい。他の非適合性は、適合性がないジオフェンス形状(たとえば、正方形のジオフェンスと円形のジオフェンス)、または適合性がないジオフェンスタイプ(たとえば、「歩行」ジオフェンスと「ドライブ」ジオフェンス)を含み得る。
決定ブロック1106において、ジオフェンス管理ユニットは、混合するのに好適な複数のジオフェンスが複数の重複ジオフェンスの中にあるかどうかを決定し得る。言い換えれば、ジオフェンス管理ユニットは、結合して混合ジオフェンスにされるのに適格な少なくとも2つのジオフェンスがあるかどうかを決定し得る。混合するのに好適な複数のジオフェンスが地理的に近い複数のジオフェンスの中にないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1106=「No」)、コンピューティングデバイスの現在位置が変化したかどうかをジオフェンス管理ユニットが決定するときの、図9Aを参照しながら上記で説明した方法900の決定ブロック914においてプロセスが継続してよい。
混合するのに好適な複数のジオフェンスが地理的に近い複数のジオフェンスの中にあるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1106=「Yes」)、ジオフェンス管理ユニットは、ブロック1108において、適合性がある複数のジオフェンスを結合して混合ジオフェンスにしてよい。一実施形態では、適合性がある複数のジオフェンスがあるとき、ジオフェンス管理ユニットは、それらを結合して混合ジオフェンスにすることができる場合がある。
ブロック1110において、ジオフェンス管理ユニットは、混合するのに好適な複数のジオフェンスに関連するジオフェンス対応アプリケーションへ、混合ジオフェンスを送ってよい。言い換えれば、混合するのに好適であるジオフェンスを現在位置に有するそれらのアプリケーションだけが混合ジオフェンスを受信し得、他のジオフェンス対応アプリケーションは混合ジオフェンスを受信し得ない。一実施形態では、それらのジオフェンスが結合して混合ジオフェンスにされなかったので、他のジオフェンス対応アプリケーションは、それらのアプリケーション開発者によって最初に規定されたジオフェンスを監視し続けてよい。
コンピューティングデバイスの現在位置が変化したかどうかをジオフェンス管理ユニットが決定するときの、図9Aを参照しながら上記で説明した方法900の決定ブロック914においてプロセスが継続してよい。
図12は、報告アプリケーションからジオフェンス横断通知を受信することに応答して混合ジオフェンスを報告アプリケーションへ送るために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1200を示す。さらなる実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上で動作している複数のジオフェンス対応アプリケーションとジオフェンスサーバとの間の仲介物として働き得る。
ブロック1202において、ジオフェンス管理ユニットが、報告アプリケーションからのジオフェンス横断通知を求めて監視し得る。一実施形態では、ジオフェンス対応アプリケーションは、ジオフェンス横断を個々に監視してよく、ジオフェンス横断通知をジオフェンス管理ユニットへ送ることによって(すなわち、ジオフェンスサーバへ直接送る代わりに)ジオフェンスが横断されたときを示してよく、ジオフェンス管理ユニットは、それに応答して、下で説明するように混合ジオフェンスに関する情報を複数のジオフェンス対応アプリケーションへ戻してよい。
決定ブロック1204において、ジオフェンス管理ユニットは、ジオフェンス管理ユニットが報告アプリケーションからジオフェンス横断通知を受信したかどうかを決定し得る。ジオフェンス管理ユニットが報告アプリケーションからジオフェンス横断通知を受信していないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1204=「No」)、ジオフェンス管理ユニットがジオフェンス横断通知を受信するまで、ジオフェンス管理ユニットがブロック1202における方法1200を実行することを続け得るようなループの中で、プロセスが継続してよい。
ジオフェンス管理ユニットが報告アプリケーションからジオフェンス横断通知を受信したとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1204=「Yes」)、ジオフェンス管理ユニットは、ブロック1206において、ジオフェンス横断通知をジオフェンスサーバへ送ってよい。一実施形態では、ジオフェンス管理ユニットは、報告アプリケーションとジオフェンスサーバとの間の仲介物として働き得る。そのような実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上のジオフェンス対応アプリケーションがジオフェンスを横断するときについてジオフェンスサーバの注意を喚起してよく、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションに代わって、更新されたジオフェンス情報をジオフェンスサーバから受信し得る。別の実施形態では、上記で説明したように、ジオフェンス管理ユニットはまた、同じコンピューティングデバイス上で動作している他のジオフェンス対応アプリケーションに関するジオフェンス情報を受信し得、同じコンピューティングデバイス上の各ジオフェンス対応アプリケーションによって監視される混合ジオフェンスを生成し得る。
ジオフェンス管理ユニットは、図9Aを参照しながら上記で説明した方法900のブロック902〜910において上記で説明したように、方法1200のブロック902〜910における動作を実行することによって方法1200の実行を続けてよい。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上で動作しているジオフェンス対応アプリケーションを識別してよく、コンピューティングデバイスの現在位置を決定してよく、識別されたジオフェンス対応アプリケーションごとに現在位置に関するジオフェンス情報を取得してよく(たとえば、ジオフェンスサーバから)、現在位置に存在し地理的に近いジオフェンスをジオフェンス情報に基づいて決定してよく、現在位置における重複ジオフェンスを結合して混合ジオフェンスにしてよい。
ブロック910において混合ジオフェンスを生成した後、ジオフェンス管理ユニットは、ブロック1208において、混合ジオフェンスを報告アプリケーションへ送ってよい。一実施形態では、ジオフェンス管理ユニットは、他の報告アプリケーションのために方法1200の実行を続けてよい。したがって、最終的に、ジオフェンス管理ユニットは、現在位置に関する混合ジオフェンスをコンピューティングデバイス上の各ジオフェンス対応アプリケーションへ送り得、コンピューティングデバイス上の各ジオフェンス対応アプリケーションは、コンピューティングデバイスが混合ジオフェンスを横断するときを同時またはほぼ同時に検出できる場合がある。
さらなる実施形態では、ジオフェンス管理ユニットは、報告アプリケーションに関連する地理的に近い複数のジオフェンスを結合して混合ジオフェンスにするために、上記で説明した動作を実行してよく、それによって、報告アプリケーションが複数の個々のジオフェンスではなく単一の混合ジオフェンスを監視することを可能にする。
図13は、報告アプリケーションへ混合ジオフェンス情報を送るべきか、それとも非混合ジオフェンス情報を送るべきかを決定するために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1300を示す。方法1300の動作は、図12を参照しながら上記で説明した方法1200の動作の一実施形態を実施する。したがって、一実施形態では、ジオフェンス管理ユニットは、図12を参照しながら上記で説明した方法1200のブロック908において重複するかつ/または極近傍にある現在位置におけるジオフェンスをジオフェンス情報に基づいて決定した後、方法1300の実行を開始してよい。
決定ブロック1102において、ジオフェンス管理ユニットは、地理的に近い複数のジオフェンスが現在位置にあるかどうかを決定し得る。言い換えれば、図11を参照しながら上記で説明したように、ジオフェンス管理ユニットは、現在位置における任意のジオフェンスを結合することが可能であるかどうかを決定してよい。
地理的に近い複数のジオフェンスが現在位置にないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1102=「No」)、ジオフェンス管理ユニットは、ブロック1304において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。一実施形態では、混合ジオフェンスを生成するために1つを越えるジオフェンスが必要とされるので、コンピューティングデバイスの現在位置に存在する複数のジオフェンスがないとき、ジオフェンス管理ユニットは混合ジオフェンスを生成できないことがある。別の実施形態では、ジオフェンス管理ユニットが別の報告アプリケーションからのジオフェンス横断通知を求めて監視し得るような、図12を参照しながら上記で説明した方法1200でのブロック1202においてプロセスが継続してよい。
地理的に近い複数のジオフェンスが現在位置にあるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1102=「Yes」)、ジオフェンス管理ユニットは、ブロック1104において、図6を参照しながら上記で説明した方法600でのブロック604を参照しながら上記で説明したように、地理的に近い複数のジオフェンスのうちのどれが混合するのに好適であるかを決定し得る。
決定ブロック1106において、ジオフェンス管理ユニットは、混合するのに好適な複数のジオフェンスが地理的に近い複数のジオフェンスの中にあるかどうかを決定し得る。言い換えれば、ジオフェンス管理ユニットは、結合して混合ジオフェンスにされるのに適格な少なくとも2つのジオフェンスがあるかどうかを決定し得る。混合するのに好適な複数のジオフェンスが地理的に近い複数のジオフェンスの中にないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1106=「No」)、ジオフェンス管理ユニットは、ブロック1304において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。ジオフェンス管理ユニットが別の報告アプリケーションからのジオフェンス横断通知を求めて監視し得るような、図12を参照しながら上記で説明した方法1200でのブロック1202においてプロセスが継続してよい。
混合するのに好適な複数のジオフェンスが地理的に近い複数のジオフェンスの中にあるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1106=「Yes」)、ジオフェンス管理ユニットは、ブロック1108において、混合するのに好適な複数のジオフェンスを結合して混合ジオフェンスにしてよい。たとえば、ジオフェンス管理ユニットは、適合性があるジオフェンスの重み付き平均に基づいて単一のジオフェンスを生成してよい。
随意のブロック1302において、ジオフェンス管理ユニットは、混合するのに好適な複数のジオフェンスに関連するジオフェンス対応アプリケーションへ、混合ジオフェンスを送ってよい。一実施形態では、ジオフェンス管理ユニットは、混合ジオフェンスに含まれるジオフェンスを有するコンピューティングデバイス上の各ジオフェンス対応アプリケーションを更新してよい。一実施形態では、適合性がある複数のジオフェンスに関連するジオフェンス対応アプリケーションに、混合ジオフェンスを先制してプッシュすることによって、ジオフェンス管理ユニットは、それらのアプリケーションが混合ジオフェンスの監視を即時に開始できるようにしてよい。したがって、ジオフェンスサーバは、もっと後の時間において、ジオフェンス横断通知をそれらのアプリケーションの各々から受信することに応答して、それらのジオフェンス対応アプリケーションへ混合ジオフェンスを送る必要を回避し得る。
決定ブロック1306において、ジオフェンス管理ユニットは、報告アプリケーションのジオフェンスが混合するのに好適であるかどうかを決定し得る。言い換えれば、ジオフェンス管理ユニットは、決定ブロック1106を参照しながら上記で説明したように、混合するのに好適な複数のジオフェンスに報告アプリケーションのジオフェンスが含まれるかどうかを、決定し得る。
報告アプリケーションのジオフェンスが混合するのに好適でないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1306=「No」)、ジオフェンス管理ユニットは、ブロック1304において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。一実施形態では、報告アプリケーションのジオフェンスが混合するのに好適な複数のジオフェンスに含まれないとき、ジオフェンス管理ユニットは、複数のジオフェンスを混合しないことを決定し得る。そのような実施形態では、ジオフェンス管理ユニットは、報告アプリケーションのジオフェンスに対して更新されたジオフェンス情報だけを送ってよい。ジオフェンス管理ユニットは、ジオフェンス管理ユニットが別の報告アプリケーションからのジオフェンス横断通知を求めて監視し得るように、図12を参照しながら上記で説明した方法1200のブロック1202に戻る継続的なループの中で、本具現プロセスを実行してよい。
報告アプリケーションのジオフェンスが混合するのに好適であるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1306=「Yes」)、ジオフェンス管理ユニットは、図12を参照しながら上記で説明したようなブロック1208において、混合ジオフェンスを報告アプリケーションへ送ってよい。
ジオフェンス管理ユニットは、ジオフェンス管理ユニットが別の報告アプリケーションからのジオフェンス横断通知を求めて監視し得るように、図12を参照しながら上記で説明した方法1200のブロック1202に戻る継続的なループの中で、本具現プロセスを実行してよい。
図14Aおよび図14Bは、記憶された混合ジオフェンスを生成し、コンピューティングデバイスの現在位置とともに記憶された混合ジオフェンスがあるときに、記憶された混合ジオフェンスを報告アプリケーションへ送るために、コンピューティングデバイス上で動作しているジオフェンス管理ユニットによって実施され得る具現方法1400を示す。方法1400の動作は、図12を参照しながら上記で説明した方法1200の動作の一実施形態を実施する。したがって、ジオフェンス管理ユニットは、図12を参照しながら上記で説明した方法1200のブロック908において現在位置における地理的に近いジオフェンスを決定した後、方法1400の実行を開始してよい。
図14Aを参照すると、ジオフェンス管理ユニットは、決定ブロック1402において、コンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するかどうかを決定し得る。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイス上のジオフェンス対応アプリケーションによって後で使用できるように、前に生成された混合ジオフェンスを特定のエリアに関連付けてよい。言い換えれば、ジオフェンス管理ユニットは、図7Aおよび図7Bを参照しながら上記で説明したように、コンピューティングデバイス上のジオフェンス対応アプリケーションごとに白紙の状態から混合ジオフェンスを生成する必要なく、同じエリアのための混合ジオフェンスを再使用してよい。コンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1402=「Yes」)、ジオフェンス管理ユニットは、図14Bを参照しながら以下で説明するブロック1422における動作を実行してよい。
コンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連しないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1402=「No」)、ジオフェンス管理ユニットは、図9Aを参照しながら上記で説明したようにブロック910において、現在位置における地理的に近いジオフェンスを結合して混合ジオフェンスにしてよい。たとえば、ジオフェンス管理ユニットは、ジオフェンスを結合してジオフェンスのエリアのほとんどまたはすべてを含む混合ジオフェンスにしてよい。
ブロック1406において、ジオフェンス管理ユニットは、混合ジオフェンスを記憶し得る。一実施形態では、ジオフェンス管理ユニットは、コンピューティングデバイスに含まれる不揮発性メモリに混合ジオフェンスを記憶してよい。ブロック1408において、ジオフェンス管理ユニットは、混合ジオフェンスをコンピューティングデバイスの現在位置に関連付けてよい。したがって、決定ブロック1402を参照しながら上記で説明したように、ジオフェンス管理ユニットは、将来、ジオフェンスを再混合する必要なく、コンピューティングデバイスの現在位置に関して記憶された混合ジオフェンスを呼び戻して他のジオフェンス対応アプリケーションへ送ることができる場合がある。
ブロック1208において、ジオフェンス管理ユニットは、図12を参照しながら上記で説明したように、混合ジオフェンスを報告アプリケーションへ送ってよい。別の実施形態(図示せず)では、ジオフェンス管理ユニットは、コンピューティングデバイス上で動作している各ジオフェンス対応アプリケーションへ混合ジオフェンスを送ってよい。さらなる実施形態(図示せず)では、ジオフェンス管理ユニットは、混合ジオフェンスに関連するジオフェンスを現在有するジオフェンス対応アプリケーションのみへ、混合ジオフェンスを送ってよい。
ジオフェンス管理ユニットは、ジオフェンス管理ユニットが別の報告アプリケーションからのジオフェンス横断通知を求めて監視し得るように、図12を参照しながら上記で説明したようにブロック1202における動作を実行することによって、継続的なループの中で具現方法1200のプロセスを実行してよい。
図14Bを参照すると、コンピューティングデバイスの現在位置が、記憶された混合ジオフェンスに関連するとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1402=「Yes」)、ジオフェンス管理ユニットは、ブロック1422において、記憶された混合ジオフェンスに関連するジオフェンス対応アプリケーションおよびそれらのジオフェンスのリストを生成してよい。上記で説明したように、記憶された混合ジオフェンスは、ジオフェンスアプリケーションとそれらのそれぞれのジオフェンスの特定の組合せに関連付けられてよい。
図7Aおよび図7Bを参照しながら上記で説明したように、記憶された混合ジオフェンスが、地理的に近いジオフェンスおよびコンピューティングデバイス上に現在存在する地理的に近いそれらのジオフェンスに関連するジオフェンス対応アプリケーションを正確に反映するときのみ、記憶された混合ジオフェンスは有用であり得る。たとえば、ジオフェンス管理ユニットが混合ジオフェンスを記憶した後、コンピューティングデバイス上のジオフェンス対応アプリケーションおよび/またはジオフェンスは、追加、除去、または変更され、それによって、記憶された混合ジオフェンスを期限切れとし、現在位置における地理的に近いジオフェンスをとうてい表さないものとする。たとえば、ジオフェンス管理ユニットは、ジオフェンス対応アプリケーションX、Y、およびZの、それぞれジオフェンス7、8、および9に関する混合ジオフェンスを生成および記憶し得る。しかしながら、コンピューティングデバイスのユーザがジオフェンス対応アプリケーションYをアンインストールすることがあり、それによって、ジオフェンス対応アプリケーションX、Y、およびZに関して前に記憶された混合ジオフェンスを、コンピューティングデバイス上に存在する現在のアプリケーションおよびジオフェンスとともに使用するのに好適でないものとする。
したがって、決定ブロック1424において、ジオフェンス管理ユニットは、リストの中のジオフェンス対応アプリケーションおよびジオフェンスと、コンピューティングデバイス上に現在存在するジオフェンス対応アプリケーションおよび地理的に近いジオフェンスとの間に、完全な一致があるかどうかを決定し得る。ジオフェンス管理ユニットは、リストの中のジオフェンス対応アプリケーションを、図12を参照しながら説明した方法1200のブロック902において識別されたジオフェンス対応アプリケーションと比較することによって、この動作を実行し得る。同様に、ジオフェンス管理ユニットは、リストの中のジオフェンスを、図12を参照しながら上記で説明した方法1200のブロック908の動作において地理的に近いと決定されたそれらのジオフェンス対応アプリケーションに関連するジオフェンスと比較し得る。
完全な一致がないとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1424=「No」)、ジオフェンス管理ユニットは、ブロック1304において、非混合ジオフェンス情報を報告アプリケーションへ送ってよい。言い換えれば、たとえ報告アプリケーションのコンピューティングデバイスの現在位置に関連する混合ジオフェンスがあっても、コンピューティングデバイス上のジオフェンス対応アプリケーションおよびジオフェンスと、リストに含まれるそれらとの間に完全な一致がないとき、報告アプリケーションは混合ジオフェンスを受信しないことがある。ジオフェンス管理ユニットは、ジオフェンス管理ユニットが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンス管理ユニットが継続的に監視するように、図12を参照しながら上記で説明したようにブロック1202における動作を実行することによって、継続的なループの中で具現方法1200プロセスを実行してよい。
完全な一致があるとジオフェンス管理ユニットが決定するとき(すなわち、決定ブロック1424=「Yes」)、ジオフェンス管理ユニットは、ブロック1428において、記憶された混合ジオフェンスを報告アプリケーションへ送ってよく、ジオフェンス管理ユニットが別の報告アプリケーションからジオフェンス横断通知を受信したかどうかをジオフェンス管理ユニットが継続的に監視するように、図12を参照しながら上記で説明したような方法1200のブロック1202における動作を実行することに戻ってよい。
図15A〜図15Cは、ジオフェンスを結合して単一の混合ジオフェンスにするための様々な方策の例である。
一実施形態では、複数のジオフェンスから混合ジオフェンスを生成するとき、ジオフェンスサーバまたはジオフェンス管理ユニットは、極近傍にある/重複するジオフェンスのパターンを分析してよく、有効な粒度を維持することによって(たとえば、それほど大きな精度を失わないことによって)ジオフェンスの一般の有用性に大幅に影響を及ぼすことなく、コンピューティングデバイスにとっての作業負荷のバランスをとる(すなわち、位置検出無線の使用量および/またはサーバ通信の数を低減する)混合ジオフェンスを作成し得る。たとえば、大規模な混合ジオフェンスは位置検出無線の使用量および/またはサーバ通信の数を低減することになるが、ロケーションベースサービスの精度が大きく影響されることになるために、大規模なジオフェンスエリアが、各アプリケーションにとって極めて限定された実用性を有することになるので、ジオフェンスサーバは都市としてのサイズを有する大規模な混合ジオフェンスを生成しない場合がある。したがって、一実施形態では、ジオフェンスサーバおよび/またはジオフェンス管理ユニットは、コンピューティングデバイスの作業負荷(たとえば、位置検出無線の使用量および/またはサーバとの通信の数)の、混合ジオフェンスの有用性(たとえば、機能できるロケーションベースサービスを容易にするためのその能力)とのバランスをとるような方法で、混合ジオフェンスを生成し得る。
一実施形態では、ジオフェンスサーバ、またはコンピューティングデバイス上で動作しているジオフェンス管理ユニットは、3つのジオフェンスエリア1502、1504、1506が存在するとともに同じ位置で重複していると決定し得、ジオフェンスサーバまたはジオフェンス管理ユニットは、ジオフェンスエリア1502、1504、1506に関連するロケーションベースサービスに過度に悪影響を及ぼさない混合ジオフェンスを生成するために、ジオフェンスエリア1502、1504、1506をどのように結合するのかを決定するための様々な計算を実行し得る。
図15Aに示す例では、ジオフェンスサーバまたはジオフェンス管理ユニットは、ジオフェンスエリア1502、1504、1506上で混合動作1520aを実行して、ジオフェンスエリア1502、1504、1506の外周に基づく混合ジオフェンス1515を作成してよい。一実施形態では、位置検出無線の使用量および/またはジオフェンスサーバとの通信の観点からコンピューティングデバイスの作業負荷を大きく減らしながらロケーションベースサービスへのインパクトがわずかに影響を及ぼされ得るような、相当な重複がジオフェンスの間にあるとき、ジオフェンスサーバまたはジオフェンス管理ユニットは、ジオフェンスの外周に基づいて混合ジオフェンス1515を生成することを選んでよい。
図15Bに示す別の例では、ジオフェンスサーバまたはジオフェンス管理ユニットは、ジオフェンスエリア1502、1504、1506上で混合動作1520bを実行して、ジオフェンスエリア1502、1504、1506のエリアの重み付き平均に基づく混合ジオフェンス1508(たとえば、長方形)を生成してよい。そのような例では、混合ジオフェンス1508は、いくらかのロケーションベース精度を失うことがあるが、重み付き平均をとることが位置検出無線の使用量および/またはジオフェンスサーバへ行われる通信の数を十分に低減し得る。
図15Cに示すまた別の例では、ジオフェンスサーバまたはジオフェンス管理ユニットは、ジオフェンスエリア1502、1504、1506上で混合動作1520cを実行してよく、たとえジオフェンスエリア1502、1504、1506がわずかに重複していても混合ジオフェンスを生成しないことを決定し得る。この例では、ジオフェンスエリア1502、1504、1506のエリアを十分にカバーするために、混合ジオフェンスがジオフェンスエリア1502、1504、1506よりも著しく大きい必要があることになる。したがって、ジオフェンスエリア1502、1504、1506に関するいかなる混合ジオフェンスも、ロケーションベースサービスの精度を大幅に低減することになる。言い換えれば、ジオフェンスサーバおよび/またはジオフェンス管理ユニットは、ジオフェンスエリア1502、1504、1506が混合するのに好適でないと決定し得る。
様々な実施形態は、様々なコンピューティングデバイスのいずれにも実装することができ、その一例が図16に示される。たとえば、コンピューティングデバイス1600は、内部メモリ1604に結合されたプロセッサ1602を含み得る。内部メモリ1604は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリまたは非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってよい。プロセッサ1602または、抵抗感知タッチスクリーン、静電容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンディスプレイ1606に結合され得る。加えて、コンピューティングデバイス1600のディスプレイは、タッチスクリーン機能を有する必要はない。加えて、コンピューティングデバイス1600は、プロセッサ1602に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1616に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ1608を有してよい。コンピューティングデバイス1600はまた、ユーザ入力を受け取るための物理ボタン1612aおよび1612bを含んでよい。コンピューティングデバイス1600はまた、コンピューティングデバイス1600をオンおよびオフにするための電源ボタン1618を含んでよい。コンピューティングデバイス1600は、コンピューティングデバイスの地理的位置を決定するためのGPSトランシーバ1620を随意に有してよい。コンピューティングデバイス1600は、様々な電子構成要素に結合されたバッテリー1622によって電力供給され得る。コンピューティングデバイス1600はまた、オーディオ出力を提供するためのスピーカー1614を含んでよい。
具現方法の部分は、具現方法を実行している間にコンピューティングデバイスプロセッサによってアクセスされ得る正常な動作挙動のデータベースを維持することなどの、サーバにおいて発生する処理のいくつかによって、クライアントサーバアーキテクチャの中で行われてよい。そのような実施形態は、図17に示したサーバ1700などの様々な市販のサーバコンピューティングデバイスのいずれかに実装され得る。そのようなサーバ1700は、通常、揮発性メモリ1702、およびディスクドライブ1703などの大容量不揮発性メモリに結合されたプロセッサ1701を含む。サーバ1700はまた、プロセッサ1701に結合された、フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1704を含んでよい。サーバ1700はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークなどのネットワーク1706とデータ接続を確立するためにプロセッサ1701に結合されたネットワークアクセスポート1705を含んでよい。プロセッサ1701は、上記で説明した様々な実施形態の機能を含む様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数のマルチプロセッサチップであってよい。通常、ソフトウェアアプリケーションは、それらがアクセスされプロセッサ1701にロードされる前に、内部メモリ1702、1703に記憶され得る。プロセッサ1701は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
前述の方法の説明およびプロセスフロー図は、例示的な例として提供されるにすぎず、様々な実施形態のステップが、提示された順序で実施されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、前述の実施形態におけるステップの順序は、任意の順序で実行されてよい。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は方法の説明を通して読者を導くために使用されるにすぎない。さらに、たとえば、冠詞「a」、「an」、または「the」を使用する単数形での請求項の要素へのいかなる参照も、要素を単数形に限定するものとして解釈すべきではない。
本出願で使用する用語「構成要素」、「ユニット」、「コントローラ」、「システム」、「エンジン」、「生成器」、「マネージャ」などは、限定はしないが、特定の動作または機能を実行するように構成される、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連エンティティを含むものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってよい。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方が、コンポーネントと呼ばれてよい。1つまたは複数の構成要素がプロセス内および/または実行スレッド内に存在してよく、1つの構成要素が1つのプロセッサもしくはコアに局在してよく、かつ/または2つ以上のプロセッサもしくはコアに分散されてよい。加えて、これらの構成要素は、様々な命令および/またはデータ構造がその上に記憶された様々な非一時的コンピュータ可読媒体から実行され得る。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信し得る。
本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明された。そのような機能が、ハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課された設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理回路、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマルチプロセッサであり得るが、代替的に、プロセッサはいかなる従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成として実装されてよい。代替的に、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行されてもよい。
1つまたは複数の例示的な実施形態では、説明した機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体に常駐し得るプロセッサ実行可能ソフトウェアモジュールで具現化され得る。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得るとともにコンピュータによってアクセスされ得る任意の他の媒体を含み得る。ディスク(disk)およびディスク(disc)は、本明細書で使用されるとき、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)はレーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体上および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在してよい。
開示した実施形態の前述の説明は、当業者が本発明を作成または使用することを可能にするために提供される。これらの実施形態に対する様々な修正が当業者には容易に明らかであり、本明細書で定義された一般原理は、本発明の趣旨または範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書で示した実施形態に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示した原理および新規な特徴と一致する最も広い範囲が与えられるべきである。