अनुमति के अनुरोध, वेब के मुख्य तरीके हैं. इनकी मदद से, ऐसी सुविधाओं को सुरक्षित रखा जाता है जो उपयोगकर्ताओं की निजता और सुरक्षा के लिए खतरनाक हो सकती हैं. अनुमति के अनुरोधों की मदद से, ब्राउज़र यह पक्का करते हैं कि उपयोगकर्ता, अनुरोध करने वाली वेबसाइट को उस सुविधा का ऐक्सेस देने के लिए तैयार है या नहीं. अनुमति के अनुरोधों का इस्तेमाल कई एपीआई के लिए किया जाता है. इनमें मीडिया कैप्चर (कैमरा और माइक्रोफ़ोन), जगह की जानकारी, स्टोरेज ऐक्सेस, MIDI, और सूचनाएं शामिल हैं. ज़्यादा जानकारी के लिए, MDN पर Permissions API का दस्तावेज़ देखें.
इस गाइड में, Chrome के इस्तेमाल के आंकड़ों और उपयोगकर्ताओं पर की गई रिसर्च के आधार पर, उपयोगकर्ताओं को अनुमति के अनुरोध दिखाने के सबसे सही तरीकों के बारे में बताया गया है. इन सबसे सही तरीकों का पालन करने पर, उपयोगकर्ताओं को कम ग़ैर-ज़रूरी प्रॉम्प्ट दिखेंगे. इससे डेवलपर को "ब्लॉक करें" के कम फ़ैसले मिलेंगे. लेख के आखिर में, अनुमति वाले एपीआई के साथ काम करने के लिए कुछ कोड पैटर्न और उपयोगकर्ताओं को ब्लॉक की गई स्थिति से बाहर निकालने के सबसे सही तरीकों के बारे में बताया गया है.
प्रॉम्प्ट के इस्तेमाल के सबसे सही तरीके
आपको उपयोगकर्ता के इंटरैक्शन के बाद अनुमति मांगनी चाहिए. ऐसा उस समय करना चाहिए, जब उपयोगकर्ताओं को यह समझ आ जाए कि आपने अनुमति क्यों मांगी है और अनुमति देने से उन्हें क्या फ़ायदा होगा. जहां संभव हो, वहां उपयोगकर्ताओं को एक ही फ़ंक्शन को पूरा करने के लिए, किसी अन्य तरीके का इस्तेमाल करने की अनुमति दें. आम तौर पर, सही समय पर अनुमति मांगने से, उपयोगकर्ताओं को ब्लॉक होने की संभावना कम हो जाती है. यहां दिए गए सबसे सही तरीकों से, इन सुझावों के बारे में ज़्यादा जानकारी मिलती है.
पेज लोड होने पर या उपयोगकर्ता के इंटरैक्शन के बिना कभी भी अनुमति न मांगें
पेज लोड होने पर उपयोगकर्ताओं से अनुमति मांगना, किसी ग्राहक से दुकान में आने पर संवेदनशील जानकारी मांगने जैसा है. अनुमति का अनुरोध (संभवतः न्यूज़लेटर साइन अप और कुकी की सहमति के लिए कई अन्य अनुरोधों के बीच) देखना बहुत परेशान करने वाला अनुभव है. उपयोगकर्ताओं को यह समझ नहीं आएगा कि उनसे जानकारी क्यों मांगी जा रही है और इससे उन्हें क्या फ़ायदा होगा.
भले ही, आपका वेब ऐप्लिकेशन किसी खास सुविधा के ऐक्सेस के बिना काम न कर पाए, फिर भी आपको उपयोगकर्ताओं को यह समझने का मौका देना चाहिए कि इसकी ज़रूरत क्यों है. उदाहरण के लिए, अनुमति के प्रॉम्प्ट के पहले अपने प्रॉम्प्ट को दिखाकर, जिससे अनुमति की ज़रूरत के बारे में बताया गया हो और उपयोगकर्ताओं को कोई विकल्प दिया गया हो. उदाहरण के लिए, जहां संभव हो वहां एक ही फ़ंक्शन को पूरा करने के लिए अन्य तरीके उपलब्ध कराएं. अगर आपको पेज लोड होने के समय से बेहतर समय पर अनुमति मांगने का कोई तरीका नहीं सूझ रहा है, तो इस गाइड में आगे कुछ उदाहरण दिए गए हैं.
अनुमति मांगने के लिए, उपयोगकर्ता के पहले इंटरैक्शन (इसे ट्रांज़िशन के दौरान उपयोगकर्ता ऐक्टिवेशन भी कहा जाता है) के बिना भी अनुरोध करना एक खराब स्थिति है. Chrome के डेटा से पता चलता है कि डेस्कटॉप पर Chrome का इस्तेमाल करने वाले 77% लोगों को अनुमति के लिए प्रॉम्प्ट, उपयोगकर्ता के इंटेंट के बारे में बताए बिना दिखाए जाते हैं. इस वजह से, ऐसे सिर्फ़ 12% प्रॉम्प्ट को अनुमति मिलती है. उपयोगकर्ता के इंटरैक्शन के बाद, अनुमति की दरें 30% तक बढ़ जाती हैं. इसलिए, उपयोगकर्ता के किसी भी तरह से पेज से इंटरैक्ट करने के बाद ही अनुमति मांगें.
सिर्फ़ तब पूछें, जब उपयोगकर्ता यह समझ सकें कि आपने यह सवाल क्यों पूछा है
अनुमति देने के फ़ैसले, अक्सर निजता से जुड़े होते हैं. कॉन्टेक्स्ट के हिसाब से निजता बनाए रखने के फ़्रेमवर्क के आधार पर, हमें पता है कि निजता से जुड़े फ़ैसले, कॉन्टेक्स्ट के हिसाब से लिए जाते हैं. इसकी मुख्य बात यह समझना है कि ऐक्सेस क्यों ज़रूरी है. इसलिए, आपको सिर्फ़ उन सुविधाओं का अनुरोध करना चाहिए जिनकी ज़रूरत आपको उपयोगकर्ताओं को बेहतर अनुभव देने के लिए है. साथ ही, जिन सुविधाओं के लिए उपयोगकर्ता आपसे सहमत हों. इसके अलावा, आपको उस समय अनुमति मांगनी चाहिए, जब उपयोगकर्ता को यह साफ़ तौर पर पता हो कि अनुमति क्यों ज़रूरी है. इसका मकसद, आपके उपयोगकर्ताओं के लिए, इस्तेमाल के संदर्भ को समझना जितना हो सके उतना आसान बनाना है.
हमारी उपयोगकर्ता से जुड़ी रिसर्च से पता चलता है कि जब उपयोगकर्ताओं को यह समझ आ जाता है कि कोई साइट, डेटा का ऐक्सेस क्यों मांग रही है और उन्हें इससे क्या फ़ायदा होगा, तो वे ऐक्सेस देने की ज़्यादा संभावना रखते हैं. हमें यह भी पता चला है कि उपयोगकर्ता पहले ऐसी साइटों को एक्सप्लोर करना चाहते हैं जिनके बारे में उन्हें जानकारी नहीं है. इससे उन्हें यह समझने में मदद मिलती है कि ऐक्सेस देने के बदले उन्हें क्या फ़ायदा मिल सकता है. इस दौरान, वे अक्सर अनुमति के अनुरोधों को खारिज कर देंगे या अनदेखा कर देंगे. एक बार के लिए अनुमति देने पर, हो सकता है कि वे पहले सिर्फ़ एक बार के लिए अनुमति दें. आपके ऐप्लिकेशन में इन व्यवहारों का समर्थन होना चाहिए.
जहां भी हो सके, उसी फ़ंक्शन को पूरा करने के लिए अन्य तरीके उपलब्ध कराएं
ऐसा हो सकता है कि कुछ सुविधाओं का नतीजा, उपयोगकर्ताओं के लिए मददगार न हो. उदाहरण के लिए, जीपीएस सेंसर के बिना किसी डेस्कटॉप डिवाइस की जगह की जानकारी गलत हो सकती है. ऐसा इसलिए, क्योंकि वह व्यक्ति वीपीएन से कनेक्ट है. हो सकता है कि अन्य उपयोगकर्ता, क्लिपबोर्ड का ऐक्सेस न दें, क्योंकि वे कंट्रोल में रहना चाहते हैं और मैन्युअल रूप से की बटन के कॉम्बिनेशन से इन इवेंट को ट्रिगर करना चाहते हैं. ऐसी स्थितियों में, एक जैसे नतीजे पाने के लिए कोई दूसरा तरीका उपलब्ध कराना ज़रूरी है. उदाहरण के लिए, अगर जगह की जानकारी की अनुमति का अनुरोध किया जा रहा है, तो एक टेक्स्ट फ़ील्ड उपलब्ध कराएं, जहां आपके उपयोगकर्ता खुद पिन कोड या पता डाल सकें. क्लिपबोर्ड का इस्तेमाल करते समय, पक्का करें कि कॉपी किए जाने वाले एलिमेंट को की-कॉम्बिनेशन या कॉन्टेक्स्ट मेन्यू की मदद से भी चुना और कॉपी किया जा सकता हो. सूचनाओं के साथ, लोगों को पुश नोटिफ़िकेशन के बजाय ईमेल पाने का विकल्प दें.
एक काम का पैटर्न यह है कि ऐक्सेस के फ़ायदों के बारे में बताने के लिए, वैकल्पिक यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करें. जब उपयोगकर्ताओं को जगह की जानकारी का पता लगाने वाले एपीआई को ट्रिगर करने वाले बटन के बगल में, जगह की जानकारी डालने का विकल्प दिखता है, तो उन्हें लगता है कि वे अपनी जगह की जानकारी डाल सकते हैं. इसी तरह, अगर उपयोगकर्ताओं को पुश या ईमेल से सूचनाएं पाने या कैमरे और माइक्रोफ़ोन का ऐक्सेस दिए बिना मीटिंग में शामिल होने का विकल्प दिया जाता है, तो वे आसानी से समझ जाते हैं कि उन्हें क्या करना है.
अपने खाते को ब्लॉक होने से बचाएं. इसे वापस पाने में मुश्किल होती है
जब कोई उपयोगकर्ता, अनुमति के आधार पर ऐक्सेस की जाने वाली सुविधा को हमेशा के लिए ऐक्सेस करने की अनुमति नहीं देने का फ़ैसला ले लेता है, तो ब्राउज़र उस फ़ैसले का पालन करते हैं. अगर ऐक्सेस के लिए बार-बार अनुरोध किया जा सकता है, तो नुकसान पहुंचाने वाली साइटें उपयोगकर्ताओं को बार-बार अनुरोध भेजती रहेंगी. इसलिए, किसी सुविधा को ब्लॉक किए जाने की स्थिति से ठीक करने के लिए, उपयोगकर्ता को थोड़ी मेहनत करनी पड़ती है. इसलिए, ऐसी स्थितियों में उपयोगकर्ताओं से अनुमति मांगने से बचें जहां हो सकता है कि कई उपयोगकर्ता ऐक्सेस की अनुमति न दें.
ऐसा करने का एक सामान्य तरीका, पहले से दिए गए प्रॉम्प्ट का इस्तेमाल करना है. इसमें, उपयोगकर्ताओं को बताया जाता है कि आगे क्या होने वाला है और आपके ऐप्लिकेशन को उस सुविधा की ज़रूरत क्यों है जिसके लिए अनुरोध किया जा रहा है. जब उपयोगकर्ता इस तरह के प्री-प्रॉम्प्ट पर हां में जवाब दें, तब ही ब्राउज़र की अनुमति वाले प्रॉम्प्ट को ट्रिगर करें. कुछ मामलों में, उपयोगकर्ताओं को उस स्थिति से बाहर निकलने की ज़रूरत पड़ सकती है. इस बारे में ज़्यादा जानने के लिए, ब्लॉक किए गए उपयोगकर्ताओं को वापस लाने में मदद करना सेक्शन देखें.
तीसरे पक्ष के कॉन्टेंट पर ध्यान देना
अनुमति के अनुरोधों का एक ऐसा सोर्स है जिसकी आपको जानकारी होनी चाहिए. अगर आपकी साइट पर तीसरे पक्ष की स्क्रिप्ट शामिल की जाती हैं, तो वे अनुमति के ऐसे अनुरोध ट्रिगर कर सकती हैं जिन्हें आपको दिखाना नहीं है. इससे, उपयोगकर्ताओं को आपकी वेबसाइट पर मिलने वाले अनुभव पर असर पड़ सकता है. ऐसा खास तौर पर तब होता है, जब ऐसे प्रॉम्प्ट, पहले से बताए गए सबसे सही तरीकों का पालन न करते हों. अपने उपयोगकर्ताओं के अनुभव को कंट्रोल करने के लिए, आपको अपने कोड में जोड़ी गई तीसरे पक्ष की लाइब्रेरी और स्क्रिप्ट के दस्तावेज़ को ध्यान से पढ़ना चाहिए.
अनुमति कब मांगें
यहां कुछ ऐसे उदाहरण दिए गए हैं जिनमें अनुमति मांगने के लिए, पहले से बताए गए सबसे सही तरीकों का पालन किया गया है:
- जब कोई उपयोगकर्ता मैन्युअल तरीके से पता डालने के लिए, फ़ॉर्म फ़ील्ड के बगल में मौजूद "मेरी जगह की जानकारी का इस्तेमाल करें" बटन पर क्लिक करता है.
- जब कोई उपयोगकर्ता किसी वीडियो चैनल या पोस्ट की सदस्यता ले लेता है और उस डायलॉग बॉक्स पर 'हां' बटन पर क्लिक करता है जिसमें बताया गया हो कि अपडेट उनके फ़ोन या डेस्कटॉप पर ईमेल या सूचनाओं के तौर पर भेजे जा सकते हैं.
- जब उपयोगकर्ता वीडियो कॉल में शामिल होने के लिए तैयार हो जाता है और पहले से दिए गए प्रॉम्प्ट में, 'मुझे कॉल में दिखना और सुनाई देना है' के सवाल का 'हां' में जवाब देता है, तब यह सुविधा चालू होती है. Google Meet से जुड़ी इस केस स्टडी को देखें.
अनुमति मांगने के लिए कोड पैटर्न
एपीआई के इस्तेमाल की अनुमति पाने के लिए, अलग-अलग तरीके अपनाए जाते हैं. कुछ (आम तौर पर पुराने) एपीआई, ऐसे मॉडल का इस्तेमाल करते हैं जहां एपीआई का इस्तेमाल करने की पहली बार कोशिश करने पर, ब्राउज़र अपने-आप अनुमति मांगता है. उदाहरण के लिए, navigator.geolocation.getCurrentPosition()
को कॉल करते समय, Geolocation API.
try {
navigator.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
console.error(error);
}
अन्य एपीआई, ऐसे मॉडल का इस्तेमाल करते हैं जहां आपको पहले स्टैटिक तरीके का इस्तेमाल करके, साफ़ तौर पर अनुमति का अनुरोध करना होगा. सूचनाएं पाने की अनुमति देने के लिए, Notification.requestPermission()
एक अच्छा उदाहरण है. इसके अलावा, डिवाइस ओरिएंटेशन इवेंट एपीआई का हिस्सा, DeviceOrientationEvent.requestPermission()
भी एक अच्छा उदाहरण है. हालांकि, इसका इस्तेमाल कम किया जाता है. ध्यान दें कि कुछ ब्राउज़र, दिए गए एपीआई को अपने-आप अनुमति दे सकते हैं. उदाहरण के लिए, Chrome हमेशा डिवाइस के ओरिएंटेशन को ऐक्सेस करने की अनुमति देता है, जबकि Safari एक प्रॉम्प्ट दिखाता है.
const result = await DeviceOrientationEvent.requestPermission();
console.log(`The user's decision when prompted to use the Device Orientation
Events API was: ${result}.`);
if (result === 'granted') {
/* Use the API. */
}
अनुमतियों की स्थिति देखने का तरीका
किसी एपीआई का इस्तेमाल किया जा सकता है या नहीं, यह पता करने के लिए Permissions API के navigator.permissions.query()
तरीके का इस्तेमाल करें.
const result = await navigator.permissions.query({ name: 'geolocation' });
console.log(`The result of querying for the Geolocation API is:
${result.state}.`);
if (result.state === 'granted') {
// Use the API.
}
ब्लॉक किए गए उपयोगकर्ताओं को अनब्लॉक करने में मदद करना
उपयोगकर्ताओं को ऐक्सेस से जुड़ी समस्याओं को हल करने में मदद करने के लिए, Permissions API का इस्तेमाल करके यह पता लगाएं कि उन्होंने ऐक्सेस को ब्लॉक किया है या नहीं. साथ ही, उन्हें सेटिंग बदलने का तरीका बताएं. उदाहरण के लिए, जब उपयोगकर्ता अनुमतियों से जुड़ी सुविधा से जुड़े यूज़र इंटरफ़ेस (यूआई) एलिमेंट के साथ इंटरैक्ट करते हैं, तो पिछले सेक्शन में बताए गए पैटर्न का इस्तेमाल करें और समस्या हल करने वाला डायलॉग खोलें. अनुमति की स्थिति बदलने का तरीका, ब्राउज़र के हिसाब से अलग-अलग होता है. इसलिए, हो सकता है कि आप उपयोगकर्ता एजेंट स्ट्रिंग और अपने प्रॉडक्ट में सबसे ज़्यादा इस्तेमाल किए जाने वाले ब्राउज़र के आधार पर, मैच होने वाली जानकारी दें.
Chrome में, उपयोगकर्ताओं को पता बार की बाईं ओर मौजूद "ट्यून" आइकॉन पर क्लिक करके, साइट कंट्रोल पर जाना चाहिए. यहां, वे संबंधित अनुमति को टॉगल करके चालू कर सकते हैं. कुछ मामलों में, उन्हें इस सुविधा का इस्तेमाल करने से पहले, पेज को फिर से लोड करना पड़ सकता है. इस मामले में, विंडो के सबसे ऊपर एक मैसेज बार दिखेगा. इसमें, संबंधित बटन पर क्लिक करने पर रीलोड करने का विकल्प दिखेगा.
अनुमतियों को कंट्रोल करने के लिए, अन्य ब्राउज़र में भी मिलते-जुलते यूज़र इंटरफ़ेस (यूआई) मौजूद हैं. उदाहरण के लिए, Firefox में यह सुविधा कैसे काम करती है, देखें.