web-dev-qa-db-ja.com

navigator.permissions.query Permissions APIに代わるものはありますか?

navigator.permissions.queryPermissions APIクエリの代わりにgeolocation権限を確認する方法はありますか?まだドラフト段階にあり、ブラウザの互換性が低くなっています。

W3CパーミッションRef:https://www.w3.org/TR/権限/

問題はapp resumeで、ユーザーがネイティブ権限ポップアップでアクションを実行すると、ユーザーが取得しているactionを確認する必要がありました。

位置許可アラートのハイブリッドCordovaアプリコールバック

プラットフォーム:モバイルAndroid

[〜#〜]注[〜#〜]:使用したくないcordova diagnostic plugin

例:

navigator.permissions.query({name:'geolocation'}).then(function(result) {

  console.log('result : ', result);

});
8

そうは思いません。

現時点では、navigator.permissionsオブジェクトは定義されていません。Web権限とAndroid権限を混在させないようにする目的で、おそらくWebViewで削除されています。

オプション1:

Cordova診断プラグイン を試してみてください。具体的には、Permissions APIと非常によく似た方法でアクセス許可の状態を返すgetLocationAuthorizationStatusメソッドです。プラグインを試していないことに注意してください。

オプション2:

場所をリクエストして、場所の権限ダイアログをトリガーします。 PositionErrorPERMISSION_DENIED定数コード。これは、ユーザーが位置情報の許可を拒否したことを意味します(今、またはアプリの設定で)。

navigator.getCurrentPosition(
  function(position) { /** won't be executed for such short timeout */ },
  function(positionError) {
    switch (positionError.code) {
    // PERMISSION_DENIED
    case 1:
      console.log('Permission denied')
      break
    // POSITION_UNAVAILABLE
    case 2:
      console.log('Permission allowed, location disabled')
      break
    // TIMEOUT
    case 3:
      console.log('Permission allowed, timeout reached')
      break
    }
  },
  {timeout: 0}
)
2
piotr_cz