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]