जगह की जानकारी की अनुमतियों का अनुरोध करें

उपयोगकर्ता की निजता को सुरक्षित रखने के लिए, जगह की जानकारी की सेवाओं का इस्तेमाल करने वाले ऐप्लिकेशन को जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध करना होगा.

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

इस पेज पर, जगह की जानकारी से जुड़ी अलग-अलग ज़रूरी शर्तों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि हर मामले में जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध कैसे किया जाता है.

जगह की जानकारी की अनुमतियों का अनुरोध करने के लिए, रनटाइम अनुमतियों के लिए सबसे सही तरीके अपनाएं.

जगह की जानकारी ऐक्सेस करने के टाइप

हर अनुमति में, यहां दी गई विशेषताएं होती हैं:

फ़ोरग्राउंड लोकेशन

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

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

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

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

    इसके अलावा, आपको फ़ोरग्राउंड सेवा के टाइप location के बारे में जानकारी देनी होगी. इसके लिए, यहां दिया गया कोड स्निपेट देखें. Android 10 (एपीआई लेवल 29) और इसके बाद के वर्शन पर, आपको फ़ोरग्राउंड सेवा के इस टाइप का एलान करना होगा.

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29) and higher. -->
    <service
        android:name="MyNavigationService"
        android:foregroundServiceType="location" ... >
        <!-- Any inner elements would go here. -->
    </service>
    

जब आपका ऐप्लिकेशन, ACCESS_COARSE_LOCATION अनुमति या ACCESS_FINE_LOCATION अनुमति का अनुरोध करता है, तब आपको फ़ोरग्राउंड में जगह की जानकारी की अनुमति की ज़रूरत के बारे में बताना होता है. यहां दिए गए स्निपेट में दिखाया गया है कि ऐसा कैसे किया जाता है:

<manifest ... >
  <!-- Always include this permission -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <!-- Include only if your app benefits from precise location access. -->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

बैकग्राउंड में लोकेशन ऐक्सेस करना

किसी ऐप्लिकेशन को बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की ज़रूरत तब होती है, जब ऐप्लिकेशन में मौजूद कोई सुविधा, लगातार अन्य उपयोगकर्ताओं के साथ जगह की जानकारी शेयर करती है या Geofencing API का इस्तेमाल करती है. इसके कई उदाहरणों में ये शामिल हैं:

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

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

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

<manifest ... >
  <!-- Required only when requesting background location access on
       Android 10 (API level 29) and higher. -->
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

सटीक जवाब

Android में, जगह की जानकारी की सटीकता के ये लेवल उपलब्ध हैं:

आस-पास
इससे डिवाइस की जगह की जानकारी का अनुमान लगाया जा सकता है. अगर जगह की अनुमानित जानकारी, LocationManagerService या FusedLocationProvider से मिली है, तो यह अनुमान करीब तीन वर्ग किलोमीटर (करीब 1.2 वर्ग मील) के दायरे में सटीक होता है. ACCESS_COARSE_LOCATION अनुमति का एलान करने पर, आपका ऐप्लिकेशन इस लेवल की सटीक जानकारी पा सकता है. हालांकि, ACCESS_FINE_LOCATION अनुमति का एलान करने पर ऐसा नहीं किया जा सकता.
सटीक
डिवाइस की जगह की जानकारी का अनुमान लगाता है, जो ज़्यादा से ज़्यादा सटीक होती है. अगर जगह की जानकारी का अनुमान LocationManagerService या FusedLocationProvider से लगाया जाता है, तो यह अनुमान आम तौर पर 50 मीटर (160 फ़ीट) के दायरे में होता है. कभी-कभी यह अनुमान कुछ मीटर (10 फ़ीट) के दायरे में या इससे भी ज़्यादा सटीक होता है. ACCESS_FINE_LOCATION अनुमति का एलान करने पर, आपका ऐप्लिकेशन इस लेवल की सटीक जानकारी वाली जगह की जानकारी पा सकता है.

अगर उपयोगकर्ता, जगह की अनुमानित जानकारी ऐक्सेस करने की अनुमति देता है, तो आपके ऐप्लिकेशन के पास सिर्फ़ जगह की अनुमानित जानकारी का ऐक्सेस होता है. भले ही, आपका ऐप्लिकेशन जगह की जानकारी ऐक्सेस करने की कोई भी अनुमति मांगे.

अगर उपयोगकर्ता सिर्फ़ अनुमानित जगह की जानकारी ऐक्सेस करने की अनुमति देता है, तो भी आपका ऐप्लिकेशन काम करना चाहिए. अगर आपके ऐप्लिकेशन की किसी सुविधा के लिए, ACCESS_FINE_LOCATION अनुमति का इस्तेमाल करके जगह की सटीक जानकारी का ऐक्सेस पाना ज़रूरी है, तो उपयोगकर्ता से आपके ऐप्लिकेशन को जगह की सटीक जानकारी का ऐक्सेस देने के लिए कहा जा सकता है.

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

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

अपने ऐप्लिकेशन के एसडीके डिपेंडेंसी में, जगह की जानकारी से जुड़ी ज़रूरी शर्तों की जांच करें

देखें कि क्या आपका ऐप्लिकेशन, जगह की जानकारी की अनुमतियों पर निर्भर रहने वाले किसी एसडीके का इस्तेमाल करता है. खास तौर पर, ACCESS_FINE_LOCATION अनुमति का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, Medium पर Getting to know the behaviors of your SDK dependencies ब्लॉग पोस्ट पढ़ें.

अन्य संसाधन

Android में जगह की जानकारी की अनुमतियों के बारे में ज़्यादा जानने के लिए, यहां दिया गया कॉन्टेंट देखें:

कोडलैब

वीडियो

सैंपल