デバイスのペアリング
このトピックでは、 Windows.Devices.Enumeration 名前空間を使用してデバイスをペアリングする方法について説明します。
重要な API
自動ペアリング
アプリケーションでデバイスを使用したいが、デバイスがペアリングされているかどうかは気にしない場合があります。 デバイスに関連付けられている機能を使用できるようにする必要があるだけです。 たとえば、アプリが Web カメラから画像をキャプチャするだけの場合、必ずしもデバイス自体に関心を持つ必要はありません。画像キャプチャだけです。 関心のあるデバイスで使用可能なデバイス API がある場合、このシナリオは自動ペアリングに該当します。
この場合は、デバイスに関連付けられている API を使用するだけで、必要に応じて呼び出しを行い、必要なペアリングを処理するためにシステムを信頼します。 一部のデバイスは、機能を使用するためにペアリングする必要はありません。 デバイスをペアリングする必要がある場合、デバイス API はバックグラウンドでペアリング アクションを処理するため、その機能をアプリに統合する必要はありません。 アプリには、特定のデバイスがペアリングされているかどうか、またはペアリングする必要があるかどうかに関する知識はありませんが、引き続きデバイスにアクセスしてその機能を使用できます。
基本ペアリング
基本的なペアリングは、デバイスのペアリングを試みるためにアプリケーションで Windows.Devices.Enumeration API を使用する場合です。 このシナリオでは、Windows にペアリング プロセスを試みさせ、それを処理します。 ユーザーの操作が必要な場合は、Windows によって処理されます。 デバイスとペアリングする必要があり、自動ペアリングを試みる関連デバイス API がない場合は、基本的なペアリングを使用します。 デバイスを使用できるようにしたいだけで、最初にデバイスとペアリングする必要があります。
基本的なペアリングを試すには、まず、目的のデバイスの DeviceInformation オブジェクトを取得する必要があります。 そのオブジェクトを受け取ると、DeviceInformationPairing オブジェクトである DeviceInformation.Pairing プロパティを操作します。 ペアリングするには、 DeviceInformationPairing.PairAsync を呼び出します。 アプリがペアリング アクションを完了する時間を確保するには結果をする必要があります。 ペアリング アクションの結果が返され、エラーが返されない限り、デバイスはペアリングされます。
基本的なペアリングを使用している場合は、デバイスのペアリング状態に関する追加情報にもアクセスできます。 たとえば、ペアリングの状態 (IsPaired) と、デバイスがペアリングできるかどうか (CanPair) がわかります。 これらはどちらも、 DeviceInformationPairing オブジェクトのプロパティです。 自動ペアリングを使用している場合は、関連する DeviceInformation オブジェクトを取得しない限り、この情報にアクセスできない可能性があります。
カスタム ペアリング
カスタム ペアリングを使用すると、アプリをペアリング プロセスに参加できます。 これにより、アプリはペアリング プロセスでサポートされている DevicePairingKinds を指定できます。 また、必要に応じてユーザーと対話するための独自のユーザー インターフェイスを作成する必要があります。 アプリでペアリング プロセスの進行にもう少し影響を与えたり、独自のペアリング ユーザー インターフェイスを表示したりする場合は、カスタム ペアリングを使用します。
カスタム ペアリングを実装するには、基本的なペアリングと同様に、目的のデバイスの DeviceInformation オブジェクトを取得する必要があります。 ただし、関心のある特定のプロパティは DeviceInformation.Pairing.Custom です。 これにより、 DeviceInformationCustomPairing オブジェクトが提供されます。 すべての DeviceInformationCustomPairing.PairAsync メソッドには、 DevicePairingKinds パラメーターを含める必要があります。 これは、デバイスのペアリングを試みるためにユーザーが実行する必要があるアクションを示します。 さまざまな種類とユーザーが実行する必要があるアクションの詳細については、 DevicePairingKinds リファレンス ページを参照してください。 基本的なペアリングと同様に、アプリがペアリング アクションを完了する時間を確保するには結果をする必要があります。 ペアリング アクションの結果が返され、エラーが返されない限り、デバイスはペアリングされます。
カスタム ペアリングをサポートするには、 PairingRequested イベントのハンドラーを作成する必要があります。 このハンドラーは、カスタム ペアリング シナリオで使用される可能性があるすべての DevicePairingKinds を考慮する必要があります。 実行する適切なアクションは、イベント引数の一部として提供される DevicePairingKinds によって異なります。
カスタム ペアリングは常にシステム レベルの操作であることに注意することが重要です。 このため、デスクトップまたは Windows Phone で操作している場合、ペアリングが行われると、システム ダイアログが常にユーザーに表示されます。 これは、これらのプラットフォームの両方が、ユーザーの同意を必要とするユーザー エクスペリエンスを提供するためです。 このダイアログは自動的に生成されるため、これらのプラットフォームで動作する際に ConfirmOnly の DevicePairingKinds を選択するときに、独自のダイアログを作成する必要はありません。 その他の DevicePairingKindsでは、特定の DevicePairingKinds 値に応じて特別な処理を実行する必要があります。 さまざまな DevicePairingKinds 値のカスタム ペアリングを処理する方法の例については、サンプルを参照してください。
Windows 10 バージョン 1903 以降では、新しい DevicePairingKinds がサポートされています (ProvidePasswordCredential)。 この値は、ペアリングされたデバイスで認証を行うには、アプリが、ユーザーに対してユーザー名とパスワードを要求する必要があることを意味します。 この状況に対処するには、PairingRequested イベント ハンドラーのイベント引数の AcceptWithPasswordCredential メソッドを呼び出して、ペアリングを受け入れます。 ユーザー名とパスワードをパラメーターとしてカプセル化する PasswordCredential オブジェクトを渡します。 リモート デバイスのユーザー名とパスワードは、ローカルでサインインしているユーザーの資格情報とは明らかに異なり、多くの場合、同じではないことに注意してください。
ペアリング解除
デバイスのペアリング解除は、上記の基本的なペアリングシナリオまたはカスタム ペアリング シナリオでのみ関連します。 自動ペアリングを使用している場合、アプリはデバイスのペアリング状態に気が付かず、ペアリングを解除する必要はありません。 デバイスのペアリングを解除する場合、基本ペアリングとカスタム ペアリングのどちらを実装する場合でも、プロセスは同じです。 これは、追加の情報を提供したり、ペアリング解除プロセスで対話したりする必要がないためです。
デバイスのペアリングを解除する最初の手順は、ペアリングを解除するデバイスの DeviceInformation オブジェクトを取得することです。 次に、 DeviceInformation.Pairing プロパティを取得し、 DeviceInformationPairing.UnpairAsync を呼び出す必要があります。 ペアリングと同様に、結果する必要があります。 ペアリング解除アクションの結果が返され、エラーが返されない限り、デバイスはペアリング解除されます。
サンプル
作業中のサンプルについては、GitHub の Device 列挙とペアリングのサンプル を参照してください。