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

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

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

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

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

स्थिति के हिसाब से संदर्भ को बेहतर बनाया

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

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

आसानी से अनुमतियां देने की सुविधा

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

लेन-देन का बोझ बढ़ता है

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

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

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

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

उन लाइब्रेरी को जानें जिनके साथ आप काम कर रहे हैं

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

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

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

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

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

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

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

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

अन्य संसाधन