उपयोगकर्ता की निजता को सुरक्षित रखने के लिए, जगह की जानकारी की सेवाओं का इस्तेमाल करने वाले ऐप्लिकेशन को जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध करना होगा.
जगह की जानकारी से जुड़ी कई अनुमतियां होती हैं. जगह की जानकारी इस्तेमाल करने के उदाहरण के लिए, आपके ऐप्लिकेशन की ज़रूरी शर्तों के आधार पर यह तय होता है कि आपको कौनसी अनुमतियां मांगनी हैं और उन्हें कैसे मांगना है.
इस पेज पर, जगह की जानकारी से जुड़ी अलग-अलग ज़रूरी शर्तों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि हर मामले में जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध कैसे किया जाता है.
जगह की जानकारी की अनुमतियों का अनुरोध करने के लिए, सभी रनटाइम अनुमतियों के लिए सबसे सही तरीके अपनाएं.
जगह की जानकारी ऐक्सेस करने के टाइप
हर अनुमति में, यहां दी गई विशेषताएं होती हैं:
- कैटगरी: फ़ोरग्राउंड में जगह की जानकारी या बैकग्राउंड में जगह की जानकारी.
- सटीकता: जगह की सटीक जानकारी या अनुमानित जानकारी.
फ़ोरग्राउंड लोकेशन
अगर आपके ऐप्लिकेशन में ऐसी सुविधा है जो सिर्फ़ एक बार या तय समय के लिए जगह की जानकारी शेयर करती है या उसे ऐक्सेस करती है, तो उस सुविधा के लिए फ़ोरग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति ज़रूरी है. यहां कुछ उदाहरण दिए गए हैं:
- नेविगेशन ऐप्लिकेशन में, एक सुविधा होती है. इसकी मदद से लोग, मोड़-दर-मोड़ निर्देश पा सकते हैं.
- मैसेजिंग ऐप्लिकेशन में, एक सुविधा होती है. इसकी मदद से उपयोगकर्ता, अपनी मौजूदा जगह की जानकारी किसी दूसरे उपयोगकर्ता के साथ शेयर कर सकते हैं.
सिस्टम आपके ऐप्लिकेशन को फ़ोरग्राउंड में जगह की जानकारी का इस्तेमाल करने वाला ऐप्लिकेशन मानता है. ऐसा तब होता है, जब आपके ऐप्लिकेशन की कोई सुविधा, डिवाइस की मौजूदा जगह की जानकारी को इनमें से किसी एक स्थिति में ऐक्सेस करती है:
- आपके ऐप्लिकेशन से जुड़ी कोई गतिविधि दिख रही हो.
आपका ऐप्लिकेशन, फ़ोरग्राउंड सेवा चला रहा हो. जब कोई फ़ोरग्राउंड सेवा चल रही होती है, तो सिस्टम उपयोगकर्ता को इसकी जानकारी देता है. इसके लिए, वह लगातार दिखने वाली सूचना दिखाता है. जब आपका ऐप्लिकेशन बैकग्राउंड में चलता है, तब भी उसके पास जगह की जानकारी ऐक्सेस करने की अनुमति बनी रहती है. जैसे, जब उपयोगकर्ता अपने डिवाइस पर होम बटन दबाता है या अपने डिवाइस का डिसप्ले बंद कर देता है.
इसके अलावा, आपको फ़ोरग्राउंड सेवा के टाइप
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) और इसके बाद के वर्शन पर, जब आपके ऐप्लिकेशन की कोई सुविधा, बैकग्राउंड में डिवाइस की जगह की जानकारी को पहली बार ऐक्सेस करती है, तो सिस्टम उपयोगकर्ता को सूचना भेजने के लिए शेड्यूल करता है. ऐसा तब होता है, जब उपयोगकर्ता ने बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति दी हो. इस सूचना से उपयोगकर्ता को याद दिलाया जाता है कि उसने आपके ऐप्लिकेशन को डिवाइस की जगह की जानकारी को हमेशा ऐक्सेस करने की अनुमति दी है. सूचना का एक उदाहरण इमेज 8 में दिखाया गया है.
अपने ऐप्लिकेशन के एसडीके डिपेंडेंसी में, जगह की जानकारी से जुड़ी ज़रूरी शर्तें देखें
देखें कि क्या आपका ऐप्लिकेशन, जगह की जानकारी की अनुमतियों पर निर्भर करने वाले किसी एसडीके का इस्तेमाल करता है. खास तौर पर, ACCESS_FINE_LOCATION अनुमति का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, Medium पर Getting to know the behaviors of your SDK dependencies ब्लॉग पोस्ट पढ़ें.
अन्य संसाधन
Android में जगह की जानकारी की अनुमतियों के बारे में ज़्यादा जानने के लिए, यहां दिया गया कॉन्टेंट देखें:
कोडलैब
वीडियो
सैंपल
- जगह की जानकारी की अनुमतियों के इस्तेमाल को दिखाने के लिए, सैंपल ऐप्लिकेशन.