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

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

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

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

permissions.query()

permissions.query() तरीके का इस्तेमाल करके, किसी अनुमति की स्थिति देखें. इससे एक स्थिति वापस लौटाना की अनुमति दी गई है (आपके पास अनुमति है), नामंजूर (आपको इससे अवरोधित किया गया है) API को ऐक्सेस करके) या प्रॉम्प्ट (उपयोगकर्ता की ज़रूरतें किया जा सकता है). उदाहरण के लिए:

// 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 की मदद से राज्य की जानकारी देखी जा सकती है 'granted', 'denied' के लिए या 'प्रॉम्प्ट' कहते हैं. किसी इवेंट को लागू करने के लिए, permissionStatus.onchange के लिए हैंडलर और अनुमति में बदलावों को हैंडल करता है राज्य.

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

ऊपर दिए गए उदाहरण में, हम हाइलाइट करते हैं कि इस अनुमति डिस्क्रिप्टर वाला जियोलोकेशन: {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');
});

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

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

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

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

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

आम समस्याएं

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