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

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

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

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

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

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

हर अनुमति में, इन विशेषताओं का कॉम्बिनेशन होता है:

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

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

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

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

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

    इसके अलावा, आपको 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>

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

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

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

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

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

अन्य संसाधन

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

कोडलैब

वीडियो

सैंपल