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

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

अन्य संसाधन