ユーザーのアクセス許可の管理

Sensor API には、センサーまたはセンサーのコレクションを使用するためのアクセス許可をユーザーに求めるために使用できるメソッドが用意されています。

センサーは機密情報を明らかにできるため、Windows では、プログラムが任意のデータにアクセスする前に、ユーザーがセンサーを有効にする必要があります。

現在の SensorState がSENSOR_STATE_ACCESS_DENIEDされているセンサーを使用する場合は、アクセス許可を要求できます。

アクセス許可を要求するには、 ISensorManager::RequestPermissions メソッドを 呼び出します。 このメソッドを呼び出すと、Windows によって [ センサーの有効化 ] ダイアログ ボックスが開き、要求したセンサーを有効にするようにユーザーに求められます。 このダイアログ ボックスには、要求したセンサーの名前がユーザーに表示されます。 ユーザーは、次のいずれかのオプションを選択できます。

  • これらのセンサーを有効にします
  • これらのセンサーは有効にしないでください
  • その他のオプションについては、コントロール パネルを開きます

ユーザーが [これらのセンサーを有効にしない] を選択した場合、プログラムが RequestPermissions を呼び出した場合でも、これらの特定のセンサーの [センサーを有効にする] ダイアログ ボックスが再び表示されません。 ユーザーが他のオプションを選択した場合、要求されたときにダイアログ ボックスを表示できます。 RequestPermissions の呼び出しに、ユーザーが以前に無効にしておくよう選択したセンサーがいくつか含まれている場合、Sensor API は、ユーザーに表示されるセンサーの一覧からこれらのセンサーを削除します。

RequestPermissions メソッドはブール値引数を受け取ります。この引数は、[センサーを有効にする] ダイアログ ボックスをモーダル ウィンドウまたはモードレス ウィンドウとして表示するかどうかを決定します。 この設定は、ダイアログ ボックスの戻りコードの動作が同期か非同期かにも影響します。

モーダルの場合、ユーザーがオプションを選択するまで、ダイアログ ボックスにはアプリケーション ウィンドウ間で排他的なフォーカスがあり、RequestPermissions の呼び出しから HRESULT リターン コードがユーザーの選択を示します。 モードレスの場合、ダイアログ ボックスには排他的フォーカスがなく、 RequestPermissions の呼び出しはすぐに返されます。 この場合、戻りコードはメソッドが成功したかどうかを示しますが、ユーザーの選択を確認するために使用することはできません。 その後、 OnStateChanged イベントを処理し、各センサーでSENSOR_STATE_READYを確認することで、有効になっているセンサーを確認できます。

リターン コードの詳細については、 RequestPermissions リファレンス ページを参照してください。

ベスト プラクティス: RequestPermissions への複数のモードレス呼び出しを回避する

RequestPermissions へのモードレス呼び出しを繰り返すと、[これらのセンサーを有効にする] ダイアログ ボックスの複数のインスタンスが表示され、ユーザー エクスペリエンスが低下する可能性があります。 RequestPermissions への最初の呼び出しの後に、他の場所センサーがインストールされ、RequestPermissions への別の呼び出しが必要になると考えられる場合は、RequestPermissions をモーダルで呼び出すか、すべての場所センサーがインストールされるまで待機してモードレス呼び出しを行う必要があります。

センサーおよび位置情報プラットフォームのプライバシーとセキュリティ

ユーザーのアクセス許可の要求