アプリケーション テザリングを使用したリモート アプリケーションへの接続
アプリケーション テザリングの使用 への移動
2 つのアプリケーションの TTetheringAppProfile コンポーネント間でアプリケーション テザリングを使ってアクションおよびデータを共有できるようにするには、まず、アプリケーションどうしが自分の TTetheringManager コンポーネントを使って互いを検出してペアにする必要があり、その後で、それらのアプリケーションの TTetheringAppProfile コンポーネントがリンクされる必要があります。
目次
アダプタとプロトコルの要件
アプリケーションのペア設定用とデータの交換用にアプリケーション テザリング機能に用意されているさまざまなアダプタとプロトコルにはそれぞれ独自の要件がある可能性があります。
組み込みのアダプタおよびプロトコルの要件を確認するには、以下を参照してください。
- TTetheringNetworkAdapter: 同じデバイスで動作しているアプリケーション間や、ローカル エリア ネットワーク(LAN)やインターネットなどの IP ネットワークを介して到達可能なアプリケーション間の接続用のアダプタ
- TTetheringBluetoothAdapter: クラシック Bluetooth を使って到達可能かつペアになっている別個のデバイスで動作しているアプリケーション間の接続用のアダプタ
- TTetheringTCPProtocol: 上記のアダプタで使用される通信プロトコル
リモート アプリケーションの検出、リモート アプリケーションとのペア設定、リモート アプリケーションへの接続のアプローチの選択
次のどちらかのアプローチを用いて、アプリケーションの検出とペア設定を行えます。
- 2 つのアプリケーションが同じグループに属していると定義し、自動的な検出およびペア設定を使用する。
- 検出されたアプリケーションのリストを取得したあと、特定のアプリケーションとペアになるように要求する。
グループを使用する方が簡単ですが、手動アプローチの方が柔軟性が高くなります。どちらのアプローチもパスワードで保護されたペア設定をサポートしています。より使用状況に適合するアプローチを選択します。また、同一の TTetheringManager を使って両方のアプローチを組み合わせることもできます。
グループを使用してアプリケーションに接続する
アプリケーションどうしで互いを自動的に検出しペアにする場合は以下を行います。
- 各アプリケーションの TTetheringAppProfile コンポーネントの Group プロパティに同じ文字列を入力します。
- 各アプリケーションの TTetheringManager コンポーネントの AutoConnect メソッドを実行時に呼び出します。
たまたま同じ Group 文字列を使用している第三者のアプリケーションに当アプリケーションが誤って接続しないように、Group 文字列には、できるだけ一意なものを選びます。たとえば、Group の文字列として UUID を使用できます。
- メモ: それでも、お使いの Group 文字列を第三者のアプリケーションが突き止め、それを意図的に使用して当アプリケーションに自動的に接続することもあり得ます。第三者のアプリケーションがアプリケーション テザリングを使って当アプリケーションに自動接続することを防ぐには、パスワードを使用します。
アプリケーションの 1 つで AutoConnect を呼び出すと、そのアプリケーションはやはりアプリケーション テザリングを使用している他のあらゆるアプリケーションを検出し、検出したそれらのアプリケーションのうち、自分の TTetheringAppProfile コンポーネントと同じ Group に属する TTetheringAppProfile コンポーネントが含まれているものを自動的にペアにして、それらに接続します。AutoConnect が処理を終了すると、OnEndAutoConnect イベントが発生します。
手動でリモート アプリケーションに接続する
アプリケーション テザリング接続の検出フェーズおよびペア設定フェーズをもっと細かく制御できるようにする場合は、次のアプローチを代わりに使用できます。
- 当アプリケーションの TTetheringManager コンポーネントの DiscoverManagers メソッドを呼び出して、アプリケーション テザリングを使用している他のアプリケーションの検出を開始します。検出が完了すると、このマネージャの OnEndManagersDiscovery イベントが発生します。
- 当 TTetheringManager で検出した RemoteManagers のリストを読み取り、TTetheringManager.PairManager を呼び出して、希望するものとペアにします。ローカル マネージャをリモート マネージャとペアにするたびに、ローカル マネージャの OnEndProfilesDiscovery イベントが発生します。
- 当 TTetheringManager で検出した RemoteProfiles のリストを読み取り、TTetheringAppProfile コンポーネントに対して Connect を呼び出して、希望するものに接続します。
リモート マネージャとリモート プロファイルは、それぞれ TTetheringManagerInfo と TTetheringProfileInfo のインスタンスです。これらのクラスは、リモート アプリケーションから得られた TTetheringManager または TTetheringAppProfile のインスタンスに関する情報を提供します。この情報を使用して、特定のリモート マネージャとペアにするかどうか、または特定のリモート プロファイルに接続するかどうかを決定します。
サブネット外部のアプリケーションへの接続
デフォルトでは、AutoConnect と DiscoverManagers はどちらも、アプリケーションの動作デバイスが存在するローカル エリア ネットワーク(LAN)のサブネットで検出を実行します。
ただし、これらのメソッドのオプション パラメータ Target
を使用して、この動作をオーバーライドし、IP アドレスやサブネットを指定することができます。
- リモート マネージャを検索する IP アドレスを指定するには、その IP アドレスを
Target
として指定します。 - IP アドレスのサブネットを指定するには、4 番目の数を 0 に設定した IP アドレスを指定します。たとえば、
Target
に "192.168.4.0" と指定した場合、マネージャは 192.168.4.x サブネットでリモート マネージャを検索します。- メモ: これより広いサブネットを指定することはできません。たとえば、"192.168.0.0" はサポートされていません。
ペア設定にパスワードを使用
RTL には、アプリケーション間のアプリケーション テザリング ペア設定を対象としたパスワード ベースのセキュリティが用意されています。このパスワードベースのシステムを使用して、独自のセキュリティ手順を実装することができます。たとえば、次のようなことが可能になります。
- アプリケーションどうしが互いを検出したときにそれらのアプリケーションを自動的に接続させ、それをユーザーに意識させない。
- ユーザーに両方のアプリケーションに手動でパスワードを入力させて、それらのアプリケーションをペアにする。
ローカル マネージャの Password プロパティを使用すると、このマネージャとペアになるためにリモート マネージャに必要なパスワードを指定できます。ローカル マネージャが、パスワードで保護されたリモート マネージャとペアになろうとすると、ローカル マネージャの OnRequestManagerPassword イベントが発生し、ローカル マネージャはこのイベントで正しいパスワードを指定する必要があります。そうしないと、ペア設定は失敗します。
ペア設定情報の永続化
お使いのマネージャがリモート マネージャとペアになると、マネージャには、リモート マネージャの識別子のほか、ペア設定時に両方のマネージャで共有されたハッシュが保存されます。いつか、たとえば(テザリングの観点で)互いに到達できる範囲から出るなどの理由で、マネージャどうしが互いに接続できなくなる可能性があります。両方のマネージャが互いに到達できる範囲内に戻ると、両者は、前回のペア設定時に保存したデータを使って互いを認識し認証することができます。たとえ元のペア設定の際にパスワードが必要であったとしても、この時の認証にはパスワードは必要ありません。
デフォルトでは、マネージャは、どのリモート マネージャとペアになっているかについての情報をメモリに格納しています。その結果、マネージャが前回ペアになっていたリモート マネージャに再接続することができますが、それは、同じセッションの中だけです。アプリケーションを再起動すると、マネージャのペア設定データが失われるため、パスワードが必要な場合は、パスワードを再度使用せずに、前回ペアになっていたリモート マネージャにマネージャが自動的に再接続することはできません。
TTetheringCustomStorage のサブクラスを実装し、そのインスタンスをマネージャの OnRequestStorage イベントの AStorage
パラメータに割り当てて、マネージャに永続性を提供することができます。ペア設定データをローカル ファイルなどの永続メディアに保存するように実装することができます。
- メモ: 再起動後も 2 つのマネージャが互いにペアになることができるためには、どちらのマネージャにも永続性が必要です。
TetheringIniFileStorage サンプル ユニットは、TTetheringCustomStorage のサブクラスを実装した例です。TetheringIniFileStorage
ユニットを使用すると、TTetheringManager コンポーネントのペア設定データを INI ファイルに永続化することができます。
関連項目
- アプリケーションへのアプリケーション テザリング機能の追加
- アプリケーション テザリングを使用したリモート アプリケーション上のアクションの共有と実行
- アプリケーション テザリングを使用したリモート アプリケーションとのデータの共有
- BDShoppingList サンプル
- DesktopCast サンプル
- MediaPlayer サンプル
- PhotoWall サンプル