Genehmigungs-API für das Web

Matt Gaunt

Wenn Sie mit der Geolocation API gearbeitet haben Haben Sie schon einmal überprüft, ob Sie Standortbestimmung ohne Aufforderung. Das war einfach nicht möglich. Du musst die aktuelle Position anfordern. Dies würde den Berechtigungsstatus angeben oder dazu führen, dass dem Nutzer eine Aufforderung angezeigt wird.

Nicht alle APIs funktionieren auf diese Weise. Die Notifications API bietet eine eigene können Sie den aktuellen Berechtigungsstatus Notification.permission.

Da immer mehr APIs in die Webplattform einfließen, muss es eine einheitliche, standardisierte Methode Entwickler den Status einer Berechtigung prüfen, anstatt sich wie jede API funktioniert. Die Permission API, die in Chrome-Version 43 verfügbar ist, Standardmethode zur Überprüfung des Berechtigungsstatus einer API.

permissions.query()

Prüfen Sie den Status einer Berechtigung mit der Methode permissions.query(). Dadurch wird Status zurückgeben: „erteilt“ (Sie haben die Berechtigung), „Abgelehnt“ (Sie sind blockiert) Zugriff auf die API) oder Aufforderung (benötigt die Nutzenden wenn Sie dazu aufgefordert werden). Beispiel:

// 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);
    };
    });

Die query-Methode nimmt eine PermissionDescriptor -Objekt, in dem Sie den Namen der Berechtigung festlegen. Die Antwort ist ein Versprechen sich zu einer PermissionStatus -Objekt enthält. In diesem Objekt können Sie den Status mit permissionStatus.state prüfen. für „granted“, „denied“ oder „Prompt“. Sie können auch ein Ereignis Handler für permissionStatus.onchange und Verarbeitung von Änderungen an der Berechtigung Bundesstaat.

Unterstützte PermissionDescriptors

Im obigen Beispiel wird hervorgehoben, wie der Berechtigungsstatus für Standortbestimmung mit dem Berechtigungsdeskriptor {name:'geolocation'}.

Der Berechtigungsdeskriptor „Benachrichtigung“ ist insofern ähnlich, als er nur eine Namensattribut: {name:'notifications'}.

Push und Midi haben jeweils eine zusätzliche -Parameter, der für diese API spezifisch ist.

Für die Push-Berechtigung können Sie einen userVisibleOnly-Parameter angeben. Hier legen Sie fest, ob bei jeder Push-Nachricht eine Benachrichtigung angezeigt werden soll. oder stille Push-Benachrichtigungen zu senden (zurzeit nur Chrome Push-Nachrichten mit Benachrichtigungen.) Beispiel:

navigator.permissions.query({name:'push', userVisibleOnly:true})

Midi lässt einen sysex-Parameter zu. Hier sehen Sie, ob Sie nur systemexklusive Meldungen erhalten. Für ein MIDI wäre dies:

navigator.permissions.query({name:'midi', sysex:true})

Berechtigungen anfordern

Ob eine Berechtigung vom Nutzer angefordert wird, hängt von der jeweiligen API ab. Beispiel: wird Ihnen beim Aufrufen von getCurrentPosition() eine Berechtigungsaufforderung angezeigt.

navigator.geolocation.getCurrentPosition(function(position) {
    console.log('Geolocation permissions granted');
    console.log('Latitude:' + position.coords.latitude);
    console.log('Longitude:' + position.coords.longitude);
});

Bei Benachrichtigungen erhält der Nutzer hingegen eine Benachrichtigung, wenn du requestPermission() aufrufst.

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

Hier geht es darum, dass die Permission API eine einheitliche Möglichkeit bietet, Status der Berechtigungen, während gleichzeitig die Anzahl der aktuell verwendeten APIs unterstützt wird im Web.

Der große Vorteil ist, dass Sie damit bessere User Experiences schaffen können, eine Aufforderung nur dann, wenn für den Nutzer offensichtlich ist, warum Sie zusätzliche und nutzen diese APIs in vollem Umfang, wenn Sie wissen, Berechtigung erteilt hat.

Eine vollständige Liste der Beispiele findest du hier.

Unterstützte Browser

Chrome ist der erste Browser, der dies implementiert, Mozilla plant den Versand von und Microsoft hat Interesse an der API gezeigt.

Bekannte Probleme

  • Wenn der Nutzer die Berechtigung ablehnt, wird für die Standortbestimmung keine Aufforderung mehr angezeigt. Der Berechtigungsstatus bleibt jedoch „prompt“. [bugs.chromium.org]