ウェブ用 Permissions API

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'}

pushmidi には、それぞれ 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]