ऐप्लिकेशन अनुमतियों के सबसे सही तरीके

अनुमति के अनुरोध, डिवाइस पर मौजूद संवेदनशील जानकारी को सुरक्षित रखते हैं. इनका इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब आपके ऐप्लिकेशन के काम करने के लिए जानकारी का ऐक्सेस ज़रूरी हो. इस दस्तावेज़ में, ऐसी जानकारी के ऐक्सेस के बिना भी उसी (या बेहतर) सुविधा को पाने के तरीकों के बारे में सलाह दी गई है. इसमें, Android ऑपरेटिंग सिस्टम में अनुमतियों के काम करने के तरीके के बारे में पूरी जानकारी नहीं दी गई है.

Android की अनुमतियों के बारे में ज़्यादा जानने के लिए, कृपया अनुमतियों की खास जानकारी देखें. अपने कोड में अनुमतियों के साथ काम करने के तरीके के बारे में जानकारी पाने के लिए, ऐप्लिकेशन की अनुमतियों का अनुरोध करना लेख पढ़ें.

Android 6.0 और उसके बाद के वर्शन में अनुमतियां

Android 6.0 (एपीआई लेवल 23) और उसके बाद के वर्शन में, ऐप्लिकेशन इंस्टॉल होने से पहले के बजाय, रनटाइम के दौरान उपयोगकर्ता से अनुमतियों का अनुरोध कर सकते हैं. इससे ऐप्लिकेशन को अनुमतियों का अनुरोध करने की अनुमति मिलती है, जब ऐप्लिकेशन को सेवाओं या सेवाओं से सुरक्षित किए गए डेटा की ज़रूरत होती है. हालांकि, इससे ऐप्लिकेशन के व्यवहार में ज़रूरी नहीं है कि कोई बदलाव हो, लेकिन उपयोगकर्ता के संवेदनशील डेटा को मैनेज करने के तरीके में कुछ बदलाव होते हैं:

ज़्यादा जानकारी

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

अनुमति के अनुरोध को स्वीकार किए जाने की संभावना बढ़ाने के लिए, सिर्फ़ तब अनुरोध करें जब किसी खास सुविधा की ज़रूरत हो. उदाहरण के लिए, माइक्रोफ़ोन का ऐक्सेस पाने के लिए, सिर्फ़ तब प्रॉम्प्ट दिखाएं, जब उपयोगकर्ता माइक्रोफ़ोन बटन पर क्लिक करे. उपयोगकर्ता, ऐसी अनुमति देने की संभावना ज़्यादा रखते हैं जिसकी उन्हें ज़रूरत होती है.

अनुमतियां देने में ज़्यादा सुविधाएं

उपयोगकर्ता, अनुमतियों का अनुरोध किए जाने पर और सेटिंग में जाकर, अलग-अलग अनुमतियों के ऐक्सेस से मना कर सकते हैं. हालांकि, इस वजह से ऐप्लिकेशन के काम न करने पर, वे फिर भी हैरान हो सकते हैं. यह पता लगाना अच्छा होता है कि कितने उपयोगकर्ता अनुमतियों (उदाहरण के लिए, Google Analytics का इस्तेमाल करने की अनुमति) को अस्वीकार कर रहे हैं. इससे, उस अनुमति पर निर्भर रहने से बचने के लिए, अपने ऐप्लिकेशन को फिर से तैयार किया जा सकता है या यह बेहतर तरीके से बताया जा सकता है कि आपके ऐप्लिकेशन को सही तरीके से काम करने के लिए, अनुमति की ज़रूरत क्यों है. आपको यह भी पक्का करना चाहिए कि जब उपयोगकर्ता अनुमतियों के अनुरोधों को अस्वीकार करते हैं या सेटिंग में जाकर अनुमतियों को टॉगल करके बंद करते हैं, तब आपका ऐप्लिकेशन अपवादों को मैनेज करता है.

लेन-देन से जुड़ी समस्याओं में बढ़ोतरी

उपयोगकर्ताओं को अनुमति ग्रुप के लिए, एक सेट के तौर पर ऐक्सेस देने के बजाय, अलग-अलग ऐक्सेस देने के लिए कहा जाता है. इसलिए, यह ज़रूरी है कि आप कम से कम अनुमतियों का अनुरोध करें. इससे अनुमतियां देने के लिए उपयोगकर्ता पर ज़्यादा बोझ पड़ता है. इसलिए, कम से कम एक अनुरोध अस्वीकार किए जाने की संभावना बढ़ जाती है.

डिफ़ॉल्ट हैंडलर बनने के लिए ज़रूरी अनुमतियां

कुछ ऐप्लिकेशन, कॉल लॉग और एसएमएस मैसेज से जुड़ी उपयोगकर्ता की संवेदनशील जानकारी के ऐक्सेस पर निर्भर होते हैं. अगर आपको कॉल लॉग और मैसेज (एसएमएस) से जुड़ी अनुमतियों का अनुरोध करना है और अपने ऐप्लिकेशन को Play Store पर पब्लिश करना है, तो आपको रनटाइम की इन अनुमतियों का अनुरोध करने से पहले, उपयोगकर्ता को सिस्टम के मुख्य फ़ंक्शन के लिए, अपने ऐप्लिकेशन को डिफ़ॉल्ट हैंडलर के तौर पर सेट करने के लिए कहना होगा.

डिफ़ॉल्ट हैंडलर के बारे में ज़्यादा जानकारी के लिए, सिर्फ़ डिफ़ॉल्ट हैंडलर में इस्तेमाल की जाने वाली अनुमतियों के बारे में गाइड देखें. इसमें, उपयोगकर्ताओं को डिफ़ॉल्ट हैंडलर प्रॉम्प्ट दिखाने के बारे में भी दिशा-निर्देश शामिल हैं.

उन लाइब्रेरी के बारे में जानकारी जिनका इस्तेमाल किया जा रहा है

कभी-कभी, आपके ऐप्लिकेशन में इस्तेमाल की जाने वाली लाइब्रेरी के लिए अनुमतियां ज़रूरी होती हैं. उदाहरण के लिए, ज़रूरी फ़ंक्शन लागू करने के लिए, विज्ञापन और आंकड़ों की लाइब्रेरी को LOCATION अनुमति ग्रुप का ऐक्सेस चाहिए. हालांकि, उपयोगकर्ता के नज़रिए से, अनुमति का अनुरोध लाइब्रेरी से नहीं, बल्कि आपके ऐप्लिकेशन से आता है.

उपयोगकर्ता, एक ही तरह की सुविधा के लिए कम अनुमतियां मांगने वाले ऐप्लिकेशन चुनते हैं. इसी तरह, डेवलपर को अपनी लाइब्रेरी की समीक्षा करनी चाहिए और ऐसे तीसरे पक्ष के SDK टूल चुनने चाहिए जो ग़ैर-ज़रूरी अनुमतियों का इस्तेमाल न करते हों. उदाहरण के लिए, अगर जगह की जानकारी की सुविधा देने वाली लाइब्रेरी का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपने FINE_LOCATION की अनुमति का अनुरोध तब तक न किया हो, जब तक कि आपने जगह के हिसाब से टारगेटिंग की सुविधा का इस्तेमाल न किया हो.

बैकग्राउंड में जगह की जानकारी के ऐक्सेस को सीमित करना

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

अनुमतियों के दोनों मॉडल के लिए जांच करना

Android 6.0 (एपीआई लेवल 23) और उसके बाद के वर्शन में, उपयोगकर्ता ऐप्लिकेशन को इंस्टॉल करने के बजाय, रनटाइम पर ऐप्लिकेशन की अनुमतियां देते हैं और उन्हें रद्द करते हैं. इसलिए, आपको अपने ऐप्लिकेशन को कई तरह की स्थितियों में टेस्ट करना होगा. Android 6.0 से पहले, यह माना जा सकता था कि अगर आपका ऐप्लिकेशन चल रहा है, तो उसके पास वे सभी अनुमतियां हैं जिनके बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया गया है. अब उपयोगकर्ता, एपीआई लेवल के बावजूद, किसी भी ऐप्लिकेशन के लिए अनुमतियां चालू या बंद कर सकता है. आपको यह जांच करनी चाहिए कि अनुमति के अलग-अलग मामलों में, आपका ऐप्लिकेशन सही तरीके से काम करता है या नहीं.

यहां दी गई सलाह से, आपको एपीआई लेवल 23 या उसके बाद के वर्शन पर काम करने वाले डिवाइसों पर, अनुमतियों से जुड़ी कोड से जुड़ी समस्याओं का पता लगाने में मदद मिलेगी:

  • अपने ऐप्लिकेशन की मौजूदा अनुमतियों और उनसे जुड़े कोड पाथ की पहचान करें.
  • अनुमति से सुरक्षित सेवाओं और डेटा के लिए, उपयोगकर्ता फ़्लो की जांच करें.
  • दी गई या रद्द की गई अनुमतियों के अलग-अलग कॉम्बिनेशन के साथ टेस्ट करें. उदाहरण के लिए, कोई कैमरा ऐप्लिकेशन अपने मेनिफ़ेस्ट में CAMERA, READ_CONTACTS, और ACCESS_FINE_LOCATION की सूची बना सकता है. आपको इन सभी अनुमतियों को चालू और बंद करके, ऐप्लिकेशन की जांच करनी चाहिए. इससे यह पक्का किया जा सकेगा कि ऐप्लिकेशन, अनुमतियों के सभी कॉन्फ़िगरेशन को आसानी से मैनेज कर सकता है.
  • कमांड लाइन से अनुमतियां मैनेज करने के लिए, adb टूल का इस्तेमाल करें:
    • ग्रुप के हिसाब से अनुमतियां और स्थिति की सूची:
      $ adb shell pm list permissions -d -g
    • एक या उससे ज़्यादा अनुमतियां दें या रद्द करें:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • अनुमतियों का इस्तेमाल करने वाली सेवाओं के लिए, अपने ऐप्लिकेशन का विश्लेषण करें.

अन्य संसाधन