Geolocation API の使用経験がある場合 使用する権限があるかどうかを プロンプトを表示せずに位置情報。これはまったく不可能だったのです。現在の位置をリクエストする必要がありました。これにより、権限の状態を示すか、ユーザーにプロンプトが表示されます。
すべての API がこのように動作するわけではありません。Notifications API には独自の方法で 現在の権限の状態を確認するには、 Notification.permission。
API のウェブ プラットフォームの拡大に伴い、単一の標準的な方法で デベロッパーが権限のステータスを覚える必要がなく 説明しましたChrome バージョン 43 で利用可能な Permission API は、 API の権限ステータスをチェックするための標準的な方法です。
permissions.query()
permissions.query()
メソッドを使用して、権限のステータスを確認します。これにより、
「許可」(許可済み)、「拒否」(許可済み)のステータスを返す
API へのアクセス)または
プロンプト(ユーザーは、
メッセージが表示されます)。例:
// Check for Geolocation API permissions
navigator.permissions.query({name:'geolocation'})
.then(function(permissionStatus) {
console.log('geolocation permission state is ', permissionStatus.state);
permissionStatus.onchange = function() {
console.log('geolocation permission state has changed to ', this.state);
};
});
query メソッドは
PermissionDescriptor
このオブジェクトで権限の名前を定義します。レスポンスは Promise である
に解決する
PermissionStatus
渡されます。このオブジェクトから、permissionStatus.state
で状態を確認できます。
「granted」、「denied」「prompt」です。またイベントを実装して
permissionStatus.onchange
のハンドラを実行し、権限の変更を処理します。
あります。
サポートされている PermissionDescriptors
この例では、Google Cloud Storage バケットの権限状態を
権限記述子 {name:'geolocation'}
を持つ位置情報。
通知権限の記述子は、通知に必要なのは
name 属性: {name:'notifications'}
push と midi には、それぞれ 2 つの パラメータを指定します。
push 権限の場合は、userVisibleOnly
パラメータを指定できます。
プッシュ メッセージごとに通知を表示するかどうかを指定します。
サイレント プッシュ通知の送信が可能です(現時点では Chrome のみ)。
(通知付きのプッシュ メッセージにも対応しています)。次のように使用します。
navigator.permissions.query({name:'push', userVisibleOnly:true})
Midi では sysex
パラメータを使用できます。これは、アラートを受け取る必要があるかどうか、
システム エクスクルーシブ メッセージです。midi の場合は、次のようになります。
navigator.permissions.query({name:'midi', sysex:true})
権限のリクエスト
ユーザーに権限をリクエストする方法は、API によって異なります。たとえば
getCurrentPosition()
を呼び出すと、位置情報によって権限のプロンプトが表示されます。
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Geolocation permissions granted');
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
});
一方、通知では、requestPermission()
を呼び出すとユーザーに通知されます。
Notification.requestPermission(function(result) {
if (result === 'denied') {
console.log('Permission wasn\'t granted. Allow a retry.');
return;
} else if (result === 'default') {
console.log('The permission request was dismissed.');
return;
}
console.log('Permission was granted for notifications');
});
ここで重要なのは、Permission API を使用すると、 サポートしながら、現在 Google Kubernetes Engine 上で できます。
この方法の大きな利点は、より優れたエクスペリエンスを 構築できることです 追加が必要な理由が明らかな場合にのみプロンプトを表示する これらの API を最大限に活用するには、 付与されることになります。
対応ブラウザ
Chrome はこれを実装した最初のブラウザであり、Mozilla はリリースを予定 Microsoft もこの API に関心を示しています。
既知の問題
- ユーザーが権限を拒否しても位置情報のプロンプトは再表示されません リクエストできます。ただし、権限のステータスは「prompt」のままです。 [bugs.chromium.org]