Permission

To carry out certain operations, such as obtaining the geographical location of the user, you need to obtain the user's permission. The Permission API allows you to check the state of a particular type of permission on the user agent.

This shows how to check a permission state. Acceptable values for permissionName are:
  • "geolocation"
  • "notifications"
  • "push"
  • "midi"
  • "camera"
  • "microphone"
  • "speaker-selection"
  • "device-info"
  • "background-fetch"
  • "background-sync"
  • "bluetooth"
  • "persistent-storage"
  • "ambient-light-sensor"
  • "accelerometer"
  • "gyroscope"
  • "magnetometer"
  • "clipboard-read"
  • "clipboard-write"
  • "display-capture"
  • "nfc"

function checkPermission(permissionName) {
   navigator.permissions.query({name: permissionName})
      .then(function (permission) {
         console.log(permission.state);               // granted, unknown, denied
         permission.addEventListener('change', function (e) {
            console.log(permission.state);
         });
      });
}

Different types of permissions are requested through different methods:


function requestGeolocation() {
   navigator.geolocation.getCurrentPosition(noop);
}
function requestNotifications() {
   Notification.requestPermission();
}
function requestPush() {
   navigator.serviceWorker.getRegistration()
            .then(function (serviceWorkerRegistration) {
      serviceWorkerRegistration.pushManager.subscribe();
   });
}
function requestMidi() {
   navigator.requestMIDIAccess({sysex: true});
}
function requestCamera() {
   navigator.getUserMedia({video: true}, noop, noop)
}
function requestMicrophone() {
   navigator.getUserMedia({audio: true}, noop, noop)
}