API oprávnění

Mnoho funkcí, které jsme přeložili z mobilu na web, vyžaduje povolení od uživatele. Zamyslete se nad geolokací, přístupem k audiu a videu (u přístupu k fotoaparátu si představte getUserMedia) a podobně rozhraní API. Pravděpodobně se všichni shodneme na tom, že vyžadovat oprávnění pro přístup k těmto rozhraním API je dobrá věc, ale vidím problém: někdy není žádný způsob, jak získat přístup ke každé úrovni oprávnění rozhraní API, aniž by uživatel vyvolal požadavek na získání těchto informací. Přinejmenším obtěžující!

Nedávno jsem objevil Permissions API, které poskytuje metodu dotazování na úroveň oprávnění pro API bez spouštění požadavku na uživatele o přístup. Podívejme se na jednoduchý příklad:

// Get the geolocation status (starts out as "prompt")
// ... meaning the user will be shown an access request if we want it
navigator.permissions.query({ name: 'geolocation' }).then(function(result) {
    /* result.status = "prompt" */
});

// Request geolocation access if we really want it
navigator.geolocation.getCurrentPosition(function(result) { /* ... */  })

// Assuming the user requested access, the permission is now "granted"
navigator.permissions.query({ name: 'geolocation' }).then(function(result) {
    /* result.status = "granted" */
});

// Push notifications require options:
navigator.permissions.query({ name: 'push', userVisibleOnly:true }).then(function(result) { /* ... */ });

Líbí se mi toto nové rozhraní API – jasná cesta pro získání úrovně oprávnění, aniž byste museli od uživatele vyžadovat jakékoli informace. Například:pokud je úroveň oprávnění záporná, nežádejte uživatele o povolení k nějaké činnosti, ani jej jiným způsobem nevyzývejte, aby dané oprávnění povolil.

Vidíte další výhodu tohoto API? Sdílejte!