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

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

"हमेशा के लिए अनुमति दें" के तौर पर जगह की जानकारी की अनुमतियों का अनुरोध करना

Android 14 से, ऐप्लिकेशन को उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने के लिए, ACCESS_BACKGROUND_LOCATION अनुमति लेनी होगी. Navigation SDK, इस अनुमति को अपनी मेनिफ़ेस्ट फ़ाइल में शामिल करता है. इसलिए, आपको इसके लिए साफ़ तौर पर अनुरोध करने की ज़रूरत नहीं है. हालांकि, ऐसा तब करें, जब आपको किसी अन्य काम के लिए इसकी ज़रूरत न हो. Gradle मेनिफ़ेस्ट मर्जर यह पक्का करेगा कि इसे ऐप्लिकेशन के मेनिफ़ेस्ट के साथ मर्ज कर दिया गया है.

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

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

अनुमति मांगने वाले डायलॉग का सैंपल

उपयोगकर्ताओं से जगह की जानकारी ऐक्सेस करने की अनुमति मांगने के बारे में ज़्यादा जानने के लिए, Android डेवलपर के दस्तावेज़ में जगह की जानकारी ऐक्सेस करने की अनुमति मांगना | सेंसर और जगह की जानकारी | Android Developers लेख पढ़ें.

पक्का करें कि नेविगेशन की सूचनाएं ठीक से हटाई गई हों

यह पक्का करने के लिए कि आपका ऐप्लिकेशन, सूचनाओं को तब तक चालू न रखे, जब तक उनकी ज़रूरत न हो, पक्का करें कि आपने यहां दिए गए चरणों को पूरा किया हो:

  • startGuidance() को शुरू करने के बाद, stopGuidance() या clearDestination() को शुरू करना न भूलें.
  • ArrivalListener के लिए रजिस्टर करने के बाद, इसे अनरजिस्टर करना न भूलें.
  • RoadSnappedLocationProvider के लिए रजिस्टर करने के बाद, इसे अनरजिस्टर करना न भूलें.

इन चरणों को पूरा करने से यह पक्का किया जा सकता है कि जब सूचनाओं की ज़रूरत न हो, तब उन्हें बंद कर दिया जाए. ऐसा न करने पर, बैटरी खत्म हो सकती है और मेमोरी लीक हो सकती है.

NavigationApi#initForegroundServiceManager के तरीकों को फिर से चालू करते समय, पहले NavigationApi#clearForegroundServiceManager को चालू करें

अगर आपका ऐप्लिकेशन ForegroundServiceManager का इस्तेमाल कर रहा है, तो NavigationApi#initForegroundServiceManagerProvider को शुरू करने से पहले NavigationApi#clearForegroundServiceManager को शुरू करें. अगर आपने पहले ही ForegroundServiceManager को शुरू कर दिया है, तो NavigationApi#initForegroundServiceManagerMessageAndIntent को शुरू करें. फ़ोरग्राउंड सेवा मैनेजर को शुरू करने के बाद, सूचना आईडी या सूचना के कॉन्टेंट को अपडेट करने के लिए ऐसा किया जा सकता है.

Android 14 में लागू की गई नई पाबंदियों के बारे में जानकारी

Android 14 (Android U) में, बैकग्राउंड में उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने वाले ऐप्लिकेशन पर नई पाबंदियां लगाई गई हैं. इन बदलावों को कम करने के लिए, Navigation SDK टूल को 5.4.0 वर्शन में अपडेट किया गया था. इससे बैकग्राउंड में जगह की जानकारी के ऐक्सेस को बेहतर तरीके से मैनेज किया जा सकता है. हमारा यह भी सुझाव है कि आप अपने ऐप्लिकेशन में जगह की जानकारी को लागू करने का तरीका अपडेट करें, ताकि आपके ऐप्लिकेशन के पास जगह की सबसे सटीक जानकारी का ऐक्सेस बना रहे.

Android 14 में हुए बदलावों का Navigation SDK पर क्या असर पड़ता है

ऐप्लिकेशन में startGuidance() को चालू करने पर, फ़ोरग्राउंड सेवा, उपयोगकर्ता को बारी-बारी से नेविगेशन की सूचनाएं दिखाना शुरू कर देती है. मोड़-दर-मोड़ नेविगेशन की सुविधा, उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने पर निर्भर करती है. ऐसा इसलिए, ताकि रास्ते को अपडेट किया जा सके और सही विज़ुअल और ऑडियो गाइडेंस दिखाया जा सके. Android 14 से, बैकग्राउंड में उपयोगकर्ता की सटीक जगह की जानकारी ऐक्सेस करने के लिए, उपयोगकर्ता से अनुमति लेना ज़रूरी है. डिफ़ॉल्ट रूप से, अगर किसी ऐप्लिकेशन के पास बैकग्राउंड में जगह की जानकारी को ऐक्सेस करने की अनुमति नहीं है और वह जगह की जानकारी के अपडेट के लिए फ़ोरग्राउंड सेवा शुरू करने की कोशिश करता है, तो सिस्टम SecurityException दिखाता है. इससे ऐप्लिकेशन क्रैश हो जाता है.

Navigation SDK इस समस्या को कैसे कम करता है

Navigation SDK के 5.4.0 वर्शन से, इस SecurityException को ऐप्लिकेशन पर असर डाले बिना हैंडल किया जाता है. इससे नेविगेशन को बैकग्राउंड में जारी रखने की अनुमति मिलती है. इसके अलावा, Navigation SDK में AndroidManifest में ACCESS_BACKGROUND_LOCATION अनुमति शामिल है. इस तरह, आपके ऐप्लिकेशन को अनुमति का एलान खुद नहीं करना पड़ता, क्योंकि Gradle मर्जिंग इसे मैनेज करेगी. हालांकि, अगर ऐप्लिकेशन के बैकग्राउंड में जाने से पहले उपयोगकर्ता को सूचना नहीं दिखती है, तो Navigation SDK, सिस्टम पर भरोसा करेगा, ताकि वह जगह की जानकारी के अपडेट दे सके. ऐसा हो सकता है कि ये सिस्टम अपडेट बार-बार न मिलें या सटीक न हों. इससे नेविगेशन का अनुभव खराब हो सकता है. इसलिए, हमारा सुझाव है कि आप उपयोगकर्ताओं से बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति भी मांगें.

ऐप्लिकेशन डेवलपर, नेविगेशन के लिए जगह की सटीक जानकारी को बेहतर बनाने के लिए क्या कर सकते हैं

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