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

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

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

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

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

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

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

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

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

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

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

    इसके अलावा, हमारा सुझाव है कि आप फ़ोरग्राउंड सेवा का एलान करें इसका 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>

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

<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 अनुमति का इस्तेमाल करके, जगह की सटीक जानकारी का ऐक्सेस ज़रूर चाहिए, तो उपयोगकर्ता से अपने ऐप्लिकेशन को जगह की सटीक जानकारी ऐक्सेस करने की अनुमति दें कहें.

रनटाइम के दौरान जगह की जानकारी के ऐक्सेस का अनुरोध करना

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

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

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

उपयोगकर्ता, जगह की अनुमानित जानकारी ही दे सकता है

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

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

ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION.

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

  • सटीक: इससे आपके ऐप्लिकेशन को जगह की सटीक जानकारी मिल पाती है.
  • अनुमानित: इससे आपके ऐप्लिकेशन को जगह की सिर्फ़ अनुमानित जानकारी मिलती है.

तीसरी इमेज से पता चलता है कि डायलॉग बॉक्स में दोनों विकल्पों के लिए विज़ुअल संकेत मौजूद हैं, ताकि उपयोगकर्ता को विकल्प चुनने में मदद मिल सके. जगह की जानकारी की सटीक जानकारी चुनने के बाद, उपयोगकर्ता अनुमति देने की अवधि चुनने के लिए, तीन बटनों में से किसी एक पर टैप करता है.

Android 12 और उसके बाद के वर्शन में, उपयोगकर्ता किसी भी ऐप्लिकेशन के लिए जगह की जानकारी की सटीकता सेट करने के लिए, सिस्टम सेटिंग पर जा सकते हैं. भले ही, उस ऐप्लिकेशन के लिए टारगेट SDK टूल का कोई भी वर्शन इस्तेमाल किया जा रहा हो. यह बात तब भी लागू होती है, जब आपका ऐप्लिकेशन किसी डिवाइस पर इंस्टॉल किया गया हो Android 11 या इससे पहले के वर्शन पर चल रहा है और फिर उपयोगकर्ता, Android 12 या इसके बाद के वर्शन वाले डिवाइस पर काम करता हो.

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

उपयोगकर्ता की पसंद से, दी गई अनुमतियों पर असर पड़ता है

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

सटीक आस-पास
ऐप्लिकेशन इस्तेमाल करते समय ACCESS_FINE_LOCATION और
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
सिर्फ़ इस बार अनुमति दें ACCESS_FINE_LOCATION और
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
अस्वीकार करें जगह की जानकारी की अनुमतियां नहीं दी गई हैं जगह की जानकारी की अनुमतियां नहीं दी गई हैं

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

Kotlin

val locationPermissionRequest = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
                // Precise location access granted.
            }
            permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
                // Only approximate location access granted.
            } else -> {
                // No location access granted.
            }
        }
    }

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(arrayOf(
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION))

Java

ActivityResultLauncher<String[]> locationPermissionRequest =
    registerForActivityResult(new ActivityResultContracts
        .RequestMultiplePermissions(), result -> {
            Boolean fineLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_FINE_LOCATION, false);
            Boolean coarseLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_COARSE_LOCATION,false);
            if (fineLocationGranted != null && fineLocationGranted) {
                // Precise location access granted.
            } else if (coarseLocationGranted != null && coarseLocationGranted) {
                // Only approximate location access granted.
            } else {
                // No location access granted.
            }
        }
    );

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(new String[] {
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION
});

जगह की सटीक जानकारी पर अपग्रेड करने का अनुरोध करें

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

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

  1. अगर ज़रूरी हो, तो बताएं कि आपके ऐप्लिकेशन को अनुमति क्यों चाहिए.
  2. ACCESS_FINE_LOCATION और ACCESS_COARSE_LOCATION की अनुमतियों के लिए फिर से अनुरोध करें. क्योंकि उपयोगकर्ता ने सिस्टम को पहले ही अनुमति दे दी है आपके ऐप के लिए अनुमानित जगह की जानकारी है, तो सिस्टम डायलॉग इस बार अलग है, क्योंकि को चौथी इमेज में दिखाया गया है और इमेज 5:
डायलॉग में &#39;सटीक में बदलें&#39; विकल्प मौजूद हैं
         जगह की जानकारी&#39;, &#39;सिर्फ़ इस बार अनुमति दें&#39;, और &#39;अस्वीकार करें&#39;.
चौथी इमेज. उपयोगकर्ता ने पहले तीसरे चित्र के डायलॉग में, अनुमानित और ऐप्लिकेशन इस्तेमाल करते समय को चुना था.
डायलॉग में &#39;सिर्फ़ इस बार&#39; विकल्प शामिल हैं और
         &#39;अस्वीकार करें&#39;.
पांचवीं इमेज. उपयोगकर्ता पहले ही अनुमानित और सिर्फ़ इस बार चुनी गईं (इस समय से डायलॉग में तीसरी इमेज).

शुरुआत में, सिर्फ़ फ़ोरग्राउंड लोकेशन का अनुरोध करें

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

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

फ़ोरग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति देने वाला बटन, स्क्रीन के आधे हिस्से की दूरी पर, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति देने वाले बटन से अलग होता है
छठी इमेज. दोनों सुविधाओं के लिए जगह की जानकारी का ऐक्सेस ज़रूरी है, लेकिन सिर्फ़ "आस-पास की सुविधाओं के बारे में सुझाव दो" सुविधा को बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की ज़रूरत है का ऐक्सेस है.

इंक्रीमेंटल अनुरोध करने की प्रोसेस इस तरह है:

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

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

  2. बाद में, जब उपयोगकर्ता ऐसी सुविधाओं को एक्सप्लोर करता है जिनके लिए बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सुविधा, बैकग्राउंड में जगह की जानकारी का अनुरोध करें ऐक्सेस दें.

ज़रूरत पड़ने पर, बैकग्राउंड में जगह की जानकारी का अनुरोध करना

सातवीं इमेज. सेटिंग पेज में इस नाम का एक विकल्प शामिल है हमेशा के लिए अनुमति दें, इससे बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सुविधा मिलती है ऐक्सेस दें.

अनुमति वाले डायलॉग का कॉन्टेंट, टारगेट SDK टूल के वर्शन के हिसाब से तय होता है

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

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

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

ऐप्लिकेशन, Android 11 या उसके बाद के वर्शन को टारगेट करता हो

अगर आपके ऐप्लिकेशन को ACCESS_BACKGROUND_LOCATION अनुमति नहीं मिली है और shouldShowRequestPermissionRationale() true दिखाता है, तो उपयोगकर्ताओं को जानकारी देने वाला यूज़र इंटरफ़ेस (यूआई) दिखाएं. इसमें ये चीज़ें शामिल होनी चाहिए:

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

ऐप्लिकेशन, Android 10 या इससे पहले के वर्शन को टारगेट करता है

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

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

उपयोगकर्ता की गतिविधियों से, बैकग्राउंड में जगह की जानकारी की सटीकता पर असर पड़ सकता है

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

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

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

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

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

अन्य संसाधन

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

कोड लैब

वीडियो

सैंपल

  • जगह की जानकारी की अनुमतियों के इस्तेमाल के बारे में जानकारी देने वाला सैंपल ऐप्लिकेशन.