अगर आपने पहले Geolocation API के साथ काम किया है, तो हो सकता है कि आपने यह देखना चाहा हो कि आपके पास, उपयोगकर्ता से अनुमति लिए बिना, जगह की जानकारी का इस्तेमाल करने की अनुमति है या नहीं. ऐसा करना मुमकिन नहीं था. आपको मौजूदा जगह की जानकारी का अनुरोध करना था. इससे, अनुमति की स्थिति का पता चलता है या उपयोगकर्ता को प्रॉम्प्ट दिखता है.
सभी एपीआई इस तरह काम नहीं करते. Notifications API में, Notification.permission के ज़रिए, अनुमति की मौजूदा स्थिति देखने का अपना तरीका है.
वेब प्लैटफ़ॉर्म पर एपीआई की संख्या बढ़ने के साथ, डेवलपर को अनुमति की स्थिति देखने के लिए एक ही स्टैंडर्ड तरीका होना चाहिए. ऐसा इसलिए, ताकि उन्हें हर एपीआई के काम करने का तरीका याद न रखना पड़े. Permission API, Chrome के वर्शन 43 में उपलब्ध है. इसका मकसद, एपीआई की अनुमति की स्थिति की जांच करने का एक मानक तरीका उपलब्ध कराना है.
permissions.query()
permissions.query()
तरीके का इस्तेमाल करके, अनुमति की स्थिति देखें. इससे, अनुमति दी गई (आपके पास अनुमति है), अस्वीकार की गई (आपको एपीआई को ऐक्सेस करने से ब्लॉक किया गया है) या अनुरोध करें (उपयोगकर्ता को अनुरोध करना होगा) स्टेटस दिखेगा. उदाहरण के लिए:
// 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);
};
});
क्वेरी का तरीका, PermissionDescriptor ऑब्जेक्ट लेता है. इसमें अनुमति का नाम तय किया जाता है. रिस्पॉन्स एक प्रॉमिस है, जो PermissionStatus ऑब्जेक्ट पर रिज़ॉल्व होता है. इस ऑब्जेक्ट से, permissionStatus.state
के साथ 'अनुमति दी गई', 'अनुमति नहीं दी गई' या 'अनुमति मांगें' की स्थिति देखी जा सकती है. permissionStatus.onchange
के लिए इवेंट हैंडलर भी लागू किया जा सकता है और अनुमति की स्थिति में हुए बदलावों को मैनेज किया जा सकता है.
इस्तेमाल किए जा सकने वाले PermissionDescriptors
ऊपर दिए गए उदाहरण में, हमने अनुमति के ब्यौरे के साथ, जगह की जानकारी की अनुमति की स्थिति के बारे में क्वेरी करने का तरीका हाइलाइट किया है: {name:'geolocation'}
.
सूचना की अनुमति का ब्यौरा, इस मामले में मिलता-जुलता है कि इसके लिए सिर्फ़ नाम एट्रिब्यूट की ज़रूरत होती है: {name:'notifications'}
.
पुश और मिडी, दोनों में एक अतिरिक्त पैरामीटर होता है, जो उस एपीआई के लिए खास होता है.
पुश नोटिफ़िकेशन की अनुमति के लिए, userVisibleOnly
पैरामीटर दिया जा सकता है.
इससे यह पता चलता है कि आपको हर पुश मैसेज के लिए सूचना दिखानी है या साइलेंट पुश मैसेज भेजने हैं. फ़िलहाल, Chrome सिर्फ़ सूचनाओं के साथ पुश मैसेज भेजने की सुविधा देता है. इसका इस्तेमाल इस तरह किया जा सकता है:
navigator.permissions.query({name:'push', userVisibleOnly:true})
Midi में sysex
पैरामीटर का इस्तेमाल किया जा सकता है. इससे पता चलता है कि आपको और/या आपको सिस्टम से जुड़े मैसेज पाने की ज़रूरत है या नहीं. मिडी के लिए यह होगा:
navigator.permissions.query({name:'midi', sysex:true})
अनुमतियों का अनुरोध करना
उपयोगकर्ता से अनुमति का अनुरोध करना, एपीआई पर निर्भर करता है. उदाहरण के लिए, getCurrentPosition()
को कॉल करने पर, जगह की जानकारी की सुविधा, अनुमति का अनुरोध दिखाएगी.
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Geolocation permissions granted');
console.log('Latitude:' + position.coords.latitude);
console.log('Longitude:' + position.coords.longitude);
});
वहीं, requestPermission()
को कॉल करने पर, सूचनाएं उपयोगकर्ता को सूचना देंगी.
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');
});
यहां ध्यान देने वाली बात यह है कि Permission API, अनुमतियों की स्थिति पर लगातार नज़र रखने की सुविधा देता है. साथ ही, यह वेब पर मौजूद कई तरह के एपीआई के साथ काम करता है.
इसका सबसे बड़ा फ़ायदा यह है कि इससे आपको अपने उपयोगकर्ताओं के लिए बेहतर अनुभव देने में मदद मिलती है. साथ ही, सिर्फ़ तब अनुरोध किया जाता है, जब उपयोगकर्ता को यह पता हो कि आपको अतिरिक्त अनुमतियों की ज़रूरत क्यों है. साथ ही, अनुमति मिलने पर इन एपीआई का पूरा फ़ायदा लिया जाता है.
उदाहरणों का पूरा सेट यहां देखें.
ब्राउज़र के इस्तेमाल से जुड़ी सहायता
Chrome, ऐसा करने वाला पहला ब्राउज़र है. Mozilla इसे शिप करने की योजना बना रहा है और Microsoft ने इस एपीआई में दिलचस्पी दिखाई है.
आम समस्याएं
- अगर उपयोगकर्ता अनुमति के अनुरोध को खारिज कर देता है, तो जगह की जानकारी का अनुरोध फिर से नहीं दिखाया जाएगा. हालांकि, अनुमति की स्थिति 'प्रॉम्प्ट' बनी रहती है. [bugs.chromium.org]