権限 API
メモ: この機能はウェブワーカー内で利用可能です。
権限 API は、現在のコンテキストに起因する API の利用許可の状態を照会するための一貫したプログラム方法を提供します。例えば、権限 API を使用して、特定の API にアクセスするための権限が付与 (granted) または拒否 (denied) されているかどうかを確認できます。
この API による権限は、API が安全なコンテキストで使用されるための要件、文書に適用される権限ポリシーの制限、ユーザーへのプロンプトなど、コンテキストのすべてのセキュリティ制限を効果的に集約します。
例えば、API が権限ポリシーによって制限されている場合、返される権限は denied
となり、ユーザーにはアクセス許可を求めるプロンプトは表示されません。
概念と使い方
従来は、様々な API が独自の権限を一貫性のない方法で扱ってきました。例えば、通知 API は権限の状態の明示的なチェックと権限の要求を許可しますが、位置情報 API はできません(ユーザーが最初の権限の要求を拒否すると問題を引き起こします)。権限 API は、権限に関する限り、開発者がより良いユーザーエクスペリエンスを実装できるようにするためのツールを提供します。
permissions
プロパティが Navigator
オブジェクトで利用可能になり、標準の閲覧コンテキストとワーカーコンテキスト(WorkerNavigator
— したがって、ワーカー内で権限の確認が可能)の両方で、権限 API 機能へのアクセスを提供する Permissions
オブジェクトを返します。
このオブジェクトを取得した後は、Permissions.query()
メソッドを使用して特定の API の PermissionStatus
で解決されるプロミスを返すなど、権限関連のタスクを実行できます。
なお、状態が prompt
の場合、ユーザーは機能にアクセスする前にプロンプトを確認する必要があります。また、このプロンプトの起動メカニズムは、特定の API に依存します。これは、権限 API の一部として定義されていません。
権限 API が使える API
すべての API の権限の状態が権限 API を使用して照会できるわけではありません。 権限に対応している注目すべき API には次のようなものがあります。
- バックグラウンド同期 API:
background-sync
(常に許可されるべき) - 圧力計測 API:
compute-pressure
- 位置情報 API:
geolocation
- ローカルフォントアクセス API:
local-fonts
- メディアキャプチャとストリーム API:
microphone
,camera
- 通知 API:
notifications
- 決済ハンドラー API:
payment-handler
- プッシュ通知 API:
push
- 画面起動ロック API:
screen-wake-lock
- センサー API:
accelerometer
,gyroscope
,magnetometer
,ambient-light-sensor
- ストレージアクセス API:
storage-access
,top-level-storage-access
- ストレージ API:
persistent-storage
- ウェブ MIDI API:
midi
- ウィンドウ制御 API:
window-management
例
Location Finder という簡単な例を用意しました。 例をライブで実行するか、Github でソースコードを見ることができます。
それがどのように機能するかについてもっと読むには 権限 API の使用を見てください。
インターフェイス
Permissions
-
権限の照会や取り消しのためのメソッドなど、コアとなる Permission API 機能を提供します。
PermissionStatus
-
権限の現在の状態、および権限の状態の変更に応答するためのイベントハンドラーへのアクセスを提供します。
他のインターフェイスへの拡張
-
それぞれメインコンテキストとワーカーコンテキストから
Permissions
オブジェクトへのアクセスを提供します。
仕様書
Specification |
---|
Permissions |
ブラウザーの互換性
api.Permissions
BCD tables only load in the browser
api.Navigator.permissions
BCD tables only load in the browser
api.WorkerNavigator.permissions
BCD tables only load in the browser