概要

Nearby Connections は、ネットワーク接続に関係なく、アプリが近くのデバイスを簡単に検出して接続し、リアルタイムでデータを交換できるようにするピアツーピア ネットワーキング API です。

ユースケースの例:

  • 共同作業用ホワイトボード: 近くにいる参加者と共有の仮想ホワイトボードでアイデアを書き留めます。
  • ローカル マルチプレーヤー型ゲーム: マルチプレーヤー型ゲームを設定し、近くにいる他のユーザーを招待して参加してもらいます。
  • マルチスクリーン ゲーム: スマートフォンやタブレットをゲーム コントローラとして使用し、Android TV などの近くにある大画面の Android デバイスに表示されるゲームをプレイします。
  • オフラインでのファイル転送: ネットワーク接続を必要とせずに、写真、動画、その他の種類のデータをすばやく共有できます。

はじめに

Nearby Connections を使用すると、付近のデバイス間のアドバタイズ、検出、接続を完全にオフラインのピアツーピア方式で行うことができます。デバイス間の接続は、高速で安全なデータ転送を可能にするため、高帯域幅、低レイテンシ、完全な暗号化が施されています。

この API の主な目標は、シンプルで信頼性が高く、パフォーマンスに優れたプラットフォームを提供することです。内部では、API は Bluetooth、BLE、Wi-Fi の技術を組み合わせて使用し、それぞれの長所を活用しながら、それぞれの短所を回避します。これにより、さまざまなプラットフォームと OS バージョンにわたる Bluetooth と Wi-Fi の変動が効果的に抽象化され、デベロッパーはユーザーにとって重要な機能に集中できるようになります。

API の概要

API の使用は、接続前と接続後の 2 つのフェーズに分かれます。

接続前のフェーズでは、Advertiser は自身をアドバタイズし、Discoverer は近くの Advertiser を検出して接続リクエストを送信します。ディスカバラーからアドバタイザーへの接続リクエストにより、対称認証フローが開始され、両側で接続リクエストを個別に承認(または拒否)します。

接続リクエストが両側で承認されると、接続が確立されたと見なされ、デバイスは接続後のフェーズに入ります。このフェーズでは、両側でデータを交換できます。

広告と検出

アドバタイザーは他のディスカバーに表示され、新しいアドバタイザーが見つかった場合や消失した場合にディスカバーに通知されます。

接続を確立する

検出者が近くの広告主への接続を希望する場合、検出者は接続をリクエストできます。

接続の開始プロセスが両側に通知され、両側で接続を承認または拒否できます。

両者が回答すると、それぞれに結果が通知されます。両側が接続を承認すると、接続が確立されたと見なされ、データ転送を開始できます。

データの交換

接続が確立されると、以降の API の使用は対称的になるため、アドバタイザーとディスカバラーの区別はなくなります。

両側でデータを交換できるようになりました。サポートされているペイロードには次の 3 種類があります。

  • バイト: 32k に制限されたバイト配列。メタデータや制御メッセージなどの送信に適しています。
  • ファイル: サイズを問わず、アプリからネットワーク インターフェースに転送されます。プロセス境界を越えたコピーは最小限に抑えられます。
  • ストリーム: 録音された音声や動画のように、最終的なサイズが事前にわからない状態で、その場で生成されるデータのストリーム。

受信側には、新しい受信データと、進捗状況の更新、キャンセル、失敗に関する通知が届きます。

確立された接続は全二重通信です。つまり、広告主と検出者は同時にデータを送受信できます。

データ収集

Google Play 開発者サービスの Nearby SDK を使用すると、ユーザー エクスペリエンスを向上させるために使用状況の分析情報が収集されます。

  • パフォーマンス指標: Nearby SDK を使用してデバイスをスキャンして接続する際に、検出と接続のレイテンシ、信頼性、スループットが収集されます。
  • デバイス情報: デバイスのモデル、国、ビルド バージョン、アプリのパッケージ名が収集され、パフォーマンス指標に関連付けられて、地域やデバイス固有のスライスが特定されます。

エンドユーザーは、[設定] > [Google] > [使用状況と診断情報] に移動して、この収集を許可または拒否できます。