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

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

शुरू करने से पहले, रनटाइम की सभी अनुमतियों के लिए सबसे सही तरीके देखें. साथ ही, अनुमतियों के अनुरोधों को कम करने के लिए, ज़्यादा जानकारी देखें.

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

हर अनुमति में, ये खासियतें शामिल होती हैं:

फ़ोरग्राउंड में जगह की जानकारी

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

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

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

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

    इसके अलावा, आपको फ़ोरग्राउंड सेवा के टाइप का 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>

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

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

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

  • फ़ैमिली लोकेशन शेयरिंग ऐप्लिकेशन में, एक सुविधा उपयोगकर्ताओं को फ़ैमिली के सदस्यों के साथ लगातार जगह की जानकारी शेयर करने की अनुमति देती है.
  • 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 में दिखता है.

अपने ऐप्लिकेशन की SDK टूल डिपेंडेंसी में, जगह की जानकारी से जुड़ी ज़रूरी शर्तें देखना

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

अन्य संसाधन

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

कोडलैब

वीडियो

सैंपल