Daha önce Geolocation API daha önce kullandığınız her şeyi kullanmak için izniniz olup olmadığını İsteme neden olmadan coğrafi konum. Bu mümkün değildi. Mevcut konumu istemeniz gerekiyordu. Bu, izin durumunu belirtir veya kullanıcıya bir istem gösterilmesine neden olur.
Tüm API'ler bu şekilde çalışmaz. Notifications API'nin benzersiz bir güncellemeyle mevcut izin durumunu şuradan kontrol edebilirsiniz: Notification.permission.
Web platformu API'lerde büyüdükçe, mobil uygulamaları geliştiricilerin bir iznin durumunu hatırlamak nasıl çalıştığını gösterir. Chrome sürüm 43'te kullanılabilen İzin API'si bu şekilde tasarlanmıştır.
permissions.query()
permissions.query()
yöntemini kullanarak bir iznin durumunu kontrol edin. Bu,
verildi (izniniz var), reddedildi (şundan engellendiniz) durumunu döndürür:
API'ye erişme) veya
istem (kullanıcının
sorulduğunda). Örneğin:
// 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);
};
});
Sorgu yöntemi,
PermissionDescriptor
nesnesini tanımlayın. Yanıt bir Vaat
kullanıcıya
PermissionStatus
nesnesini tanımlayın. Bu nesneden durumu permissionStatus.state
ile kontrol edebilirsiniz
"granted" (verildi), "denied" (reddedildi) veya "istem". Ayrıca bir etkinlik de
permissionStatus.onchange
için işleyicisi ve izindeki değişiklikleri işleme
durumu.
Desteklenen İzin Tanımlayıcıları
Yukarıdaki örnekte,
şu izin tanımlayıcısına sahip coğrafi konum: {name:'geolocation'}
.
Bildirim izni tanımlayıcısı, yalnızca bir
ad özelliği: {name:'notifications'}
.
Push ve midi'nin her biri için ek bir erişim öğesi vardır. parametresini kullanabilirsiniz.
Push izni için bir userVisibleOnly
parametresi sağlayabilirsiniz.
Bu, her push mesajı için bir bildirim göstermek isteyip istemediğinizi belirtir.
veya sessiz push bildirimleri gönderebiliyor olmanız gerekir (Şu anda yalnızca Chrome
bildirim içeren push mesajlarını destekler). Bunu şu şekilde kullanırsınız:
navigator.permissions.query({name:'push', userVisibleOnly:true})
Midi, sysex
parametresine izin verir. Bu, bir projeyi başlatmak ve/veya
özel mesajlar oluşturabilirsiniz. Midi için bu değer şu şekilde olacaktır:
navigator.permissions.query({name:'midi', sysex:true})
İzin İsteme
Kullanıcıdan izin isteme, ilgili API'ye bağlıdır. Örneğin,
coğrafi konum bilgisi, getCurrentPosition()
çağırdığınızda bir izin istemi gösterir.
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Geolocation permissions granted');
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
});
Ancak bildirimler, requestPermission()
numarasını aradığınızda kullanıcıyı bilgilendirir.
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');
});
Burada önemli olan, Permission API'nin, izinlerin kullanıcı kaynaklı olarak izinlerin durumunu ve mevcut API çeşitliliğini destekleyebilmesini sağlar. yardımcı olur.
Bunun en büyük avantajı, müşteriler için daha iyi deneyimler (kullanıcıya neden ekstra açıklamaya ihtiyaç duyduğu açıkça anlaşıldığında sorarak) ve en iyi uygulamalara sahip olduğunuzu bildiğinizde bu API'lerden izin verildi.
Kapsamlı bir örnek grubunu burada bulabilirsiniz.
Tarayıcı Desteği
Chrome bunu uygulayan ilk tarayıcıdır ve Mozilla Microsoft da bu API'ye ilgi göstermiştir.
Bilinen sorunlar
- Kullanıcı izni kapatırsa coğrafi konum izni yeniden gösterilmez isteğinde bulunabilirsiniz. Ancak izin durumu "istem" olarak kalır. [bugs.chromium.org]