ユーザーのアクセス許可の管理
Sensor API には、センサーまたはセンサーのコレクションを使用するためのアクセス許可をユーザーに求めるために使用できるメソッドが用意されています。
センサーは機密情報を明らかにできるため、Windows では、プログラムがデータにアクセスする前に、ユーザーがセンサーを有効にする必要があります。
現在の SensorState がSENSOR_STATE_ACCESS_DENIEDとなっているセンサーを使用したい場合は、アクセス許可を求めることを検討してください。
アクセス許可を要求するには、ISensorManager::RequestPermissions メソッドを呼び出します。 このメソッドを呼び出すと、要求したセンサーを有効にするようにユーザーに求める [センサー 有効にする] ダイアログ ボックスが開きます。 このダイアログ ボックスには、要求したセンサーの名前がユーザーに表示されます。 ユーザーは、次のいずれかのオプションを選択できます。
- これらのセンサーを有効にします。
- これらのセンサーを有効にしないでください。
- コントロール パネルを開いて、より多くのオプションを確認します。
ユーザーが [これらのセンサー を有効にしない]選択した場合、プログラムが RequestPermissions呼び出した場合でも、特定のセンサーに対して [センサー 有効化] ダイアログ ボックスが再び表示されません。 ユーザーが他のオプションを選択した場合、要求されたときにダイアログ ボックスを表示できます。 RequestPermissions への呼び出しに、ユーザーが以前に無効にするように選択したセンサーがいくつか含まれている場合、Sensor API は、ユーザーに表示されるセンサーの一覧からこれらのセンサーを削除します。
モーダルまたはモードレス動作
RequestPermissions メソッドは、[センサー を有効にする] ダイアログ ボックスをモーダル ウィンドウとモードレス ウィンドウのどちらとして表示するかを決定する、ブール型の 引数を受け取ります。 この設定は、ダイアログ ボックスのリターン コードの動作が同期か非同期かにも影響します。
モーダルの場合、ユーザーがオプションを選択するまで、ダイアログ ボックスにはアプリケーション ウィンドウ間で排他的なフォーカスが設定され、RequestPermissions への呼び出しから戻りコード HRESULT がユーザーの選択を示します。 モードレスの場合、ダイアログボックスには排他的フォーカスがなく、RequestPermissions の呼び出しはすぐに返されます。 この場合、戻りコードはメソッドが成功したかどうかを示しますが、ユーザーの選択を確認するために使用することはできません。 その後、OnStateChanged イベントを処理し、各センサーでSENSOR_STATE_READYを確認することで、有効になっているセンサーを確認できます。
リターン コードの詳細については、RequestPermissions リファレンス ページを参照してください。
ベスト プラクティス: RequestPermissions への複数のモードレス呼び出しを回避する
RequestPermissions へのモードレス呼び出しを繰り返すと、[これらのセンサーを有効にする] ダイアログ ボックスの複数のインスタンスが表示され、ダイアログ ボックスで画面があふれ、ユーザー エクスペリエンスが低下する可能性があります。 RequestPermissionsへの最初の呼び出しの後、他の位置センサーがインストールされる可能性があり、その場合は再度 RequestPermissionsを呼び出す必要があると思われる場合、あなたは RequestPermissions をモーダルで呼び出すか、すべての位置センサーがインストールされるのを待ってモードレスで呼び出すべきです。
関連トピック
-
センサーと位置情報プラットフォームの プライバシーとセキュリティ