अनुमति देने के अनुरोध, वेब का मुख्य तरीका है. इसकी मदद से उन क्षमताओं को बचाया जा सकता है जो उपयोगकर्ताओं की निजता और सुरक्षा के लिए खतरनाक हो सकती हैं. अनुमति देने के निर्देशों की मदद से, ब्राउज़र का मकसद यह पक्का करना होता है कि उपयोगकर्ता, अनुरोध करने वाली वेबसाइट को वह सुविधा ऐक्सेस करने की अनुमति देना चाहता है जिसके बारे में शिकायत की गई है. अनुमति के अनुरोधों का इस्तेमाल कई एपीआई के लिए किया जाता है. इनमें मीडिया कैप्चर (कैमरा और माइक्रोफ़ोन), जगह की जानकारी, स्टोरेज ऐक्सेस, 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 में यह सुविधा कैसे काम करती है, देखें.