वेब के लिए अनुमतियां एपीआई

अगर आपने पहले Geolocation API के साथ काम किया है, तो शायद आप यह जानना चाहें कि आपको बिना कोई प्रॉम्प्ट जोड़े, जियोलोकेशन का इस्तेमाल करने की अनुमति मिली है या नहीं. हालांकि, यह संभव नहीं था. आपको मौजूदा पोज़िशन के लिए अनुरोध करना पड़ता है. इससे यह पता चलता है कि अनुमति की स्थिति क्या है या उपयोगकर्ता को प्रॉम्प्ट दिखाने के लिए कहा जाएगा.

सभी एपीआई इस तरह से काम नहीं करते. सूचना एपीआई में, Notification.permission के ज़रिए अनुमति की मौजूदा स्थिति देखने का अपना अलग तरीका है.

वेब प्लैटफ़ॉर्म के एपीआई की पहुंच बढ़ने के साथ-साथ, डेवलपर के लिए एक ऐसा स्टैंडर्ड तरीका होना चाहिए जिससे वे हर एपीआई के काम करने के तरीके को याद रखने के बजाय, अनुमति की स्थिति की जांच कर सकें. Chrome के वर्शन 43 में उपलब्ध Permission API को इस स्टैंडर्ड तरीके के तौर पर रखा गया है, ताकि किसी एपीआई की अनुमति की स्थिति पता की जा सके.

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 ऑब्जेक्ट के लिए Promise का इस्तेमाल किया जाता है. इस ऑब्जेक्ट में, 'मंज़ूरी दी गई', 'अनुमति नहीं दी गई' या 'प्रॉम्प्ट' के लिए, permissionStatus.state की मदद से स्थिति की जांच की जा सकती है. आपके पास permissionStatus.onchange के लिए, इवेंट हैंडलर और अनुमति की स्थिति में बदलावों को मैनेज करने का भी विकल्प है.

काम करने वाली अनुमतियों के ब्यौरे

ऊपर दिए गए उदाहरण में, हमने अनुमति के ब्यौरे के साथ जियोलोकेशन के लिए अनुमति की स्थिति के बारे में क्वेरी करने के तरीके को हाइलाइट किया है: {name:'geolocation'}.

सूचना की अनुमति का डिस्क्रिप्टर इस मामले में मिलता-जुलता है कि इसके लिए सिर्फ़ नाम एट्रिब्यूट की ज़रूरत होती है: {name:'notifications'}.

पुश और midi, दोनों में एक और पैरामीटर होता है, जो खास तौर पर उस एपीआई के लिए होता है.

पुश अनुमति के लिए, userVisibleOnly पैरामीटर दिया जा सकता है. इससे पता चलता है कि क्या आपको हर पुश मैसेज के लिए सूचना दिखानी है या साइलेंट पुश नोटिफ़िकेशन भेजने की सुविधा है (फ़िलहाल, Chrome में सिर्फ़ नोटिफ़िकेशन वाले पुश मैसेज काम करते हैं). आप इसका इस्तेमाल ऐसे करेंगे:

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

मिडी, 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');
});

यहां बताई गई बात यह है कि अनुमति वाला एपीआई, अनुमतियों की स्थिति पर लगातार नज़र रखने की अनुमति देता है. साथ ही, यह वेब पर मौजूद एपीआई की मौजूदा रेंज के साथ काम करता है.

इसका सबसे बड़ा फ़ायदा यह है कि यह आपको अपने उपयोगकर्ताओं को बेहतर अनुभव देने में मदद करता है. ऐसा तब किया जाता है, जब उपयोगकर्ता को साफ़ तौर पर पता चल जाता है कि आपको कुछ और खास सुविधाओं की ज़रूरत क्यों है. साथ ही, जब आपको पता चलता है कि आपको अनुमति मिल गई है, तब इन एपीआई का पूरा फ़ायदा उठाना आसान होगा.

आपको यहां उदाहरणों का पूरा सेट मिल सकता है.

ब्राउज़र सहायता

Chrome पहला ब्राउज़र है जिसे लागू किया गया है. Mozilla इसे भेजने की योजना बना रहा है और Microsoft ने इस एपीआई में दिलचस्पी दिखाई है.

आम समस्याएं

  • अगर उपयोगकर्ता अनुमति का अनुरोध खारिज करता है, तो जियोलोकेशन का प्रॉम्प्ट फिर से नहीं दिखेगा. हालांकि, अनुमति की स्थिति 'प्रॉम्प्ट' रहती है. [bugs.chromium.org]