इस पेज पर, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति के लिए अनुरोध करने और इसे मैनेज करने के सबसे सही तरीकों के बारे में बताया गया है.
"हमेशा के लिए अनुमति दें" वाली जगह की जानकारी ऐक्सेस करने की अनुमति के लिए अनुरोध करना
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#clearForegroundServiceManager को लागू करने से पहले,
NavigationApi#initForegroundServiceManagerProvider को लागू करें. साथ ही, अगर आपने पहले ही
ForegroundServiceManager को शुरू कर दिया है, तो
NavigationApi#initForegroundServiceManagerMessageAndIntent को लागू करें. फ़ोरग्राउंड सर्विस मैनेजर को शुरू करने के बाद, सूचना का आईडी या सूचना का कॉन्टेंट अपडेट करने के लिए, ऐसा किया जा सकता है.
Android 14 में लागू की गई नई पाबंदियों के बारे में जानकारी
Android 14 (Android U) में, ऐप्लिकेशन के बैकग्राउंड में उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने पर नई पाबंदियां लागू की गई हैं. इन बदलावों को कम करने के लिए, Navigation SDK टूल को वर्शन 5.4.0 में अपडेट किया गया है, ताकि बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सुविधा को बेहतर तरीके से मैनेज किया जा सके. हमारा सुझाव है कि आप अपने ऐप्लिकेशन को अपडेट करें, ताकि यह पक्का किया जा सके कि आपके ऐप्लिकेशन के पास, जगह की सबसे सटीक जानकारी का ऐक्सेस बना रहे.
Android 14 में किए गए बदलावों का, Navigation SDK टूल पर क्या असर पड़ता है
जब आपके ऐप्लिकेशन में
startGuidance()
को लागू किया जाता है, तो फ़ोरग्राउंड सर्विस, बारी-बारी से नेविगेशन के लिए उपयोगकर्ता को सूचनाएं दिखाना शुरू कर देती है. बारी-बारी से नेविगेशन, उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने पर निर्भर करता है. ऐसा इसलिए, ताकि रास्ते को अपडेट किया जा सके और सही विज़ुअल और ऑडियो निर्देश दिखाए जा सकें. Android 14 से, बैकग्राउंड में उपयोगकर्ता की सटीक जगह की जानकारी ऐक्सेस करने के लिए, उपयोगकर्ता से अनुमति लेना ज़रूरी है. डिफ़ॉल्ट रूप से, अगर किसी ऐप्लिकेशन के पास बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति नहीं है और वह जगह की जानकारी के अपडेट के लिए, फ़ोरग्राउंड सर्विस शुरू करने की कोशिश करता है, तो सिस्टम SecurityException दिखाता है. इससे ऐप्लिकेशन क्रैश हो जाता है.
Navigation SDK टूल, इस समस्या को कैसे कम करता है
वर्शन 5.4.0 से, Navigation SDK टूल इस SecurityException को ऐप्लिकेशन पर असर डाले बिना हैंडल करता है. इससे नेविगेशन, बैकग्राउंड में चलता रहता है. इसके अलावा, Navigation SDK टूल के AndroidManifest में, ACCESS_BACKGROUND_LOCATION अनुमति शामिल होती है. इस तरह, आपके ऐप्लिकेशन को अनुमति के लिए खुद से एलान करने की ज़रूरत नहीं होती, क्योंकि Gradle मर्जर इसे हैंडल करेगा. हालांकि, अगर ऐप्लिकेशन के बैकग्राउंड में जाने से पहले, उपयोगकर्ता को कोई सूचना नहीं दिखती है, तो Navigation SDK टूल, जगह की जानकारी के अपडेट देने के लिए सिस्टम पर निर्भर करेगा. हो सकता है कि सिस्टम के ये अपडेट, बार-बार या सटीक न हों. इससे नेविगेशन का अनुभव खराब हो सकता है. इसलिए, हमारा सुझाव है कि आप उपयोगकर्ताओं से बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति के लिए भी प्रॉम्प्ट दिखाएं.
ऐप्लिकेशन डेवलपर, नेविगेशन के लिए जगह की जानकारी की सटीकता को कैसे बेहतर बना सकते हैं
अपने ऐप्लिकेशन को अपडेट करके, Navigation SDK टूल के इस्तेमाल किए जाने वाले जगह की जानकारी के सिग्नल की सटीकता को बेहतर बनाया जा सकता है. इसके लिए, उपयोगकर्ताओं से बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति के लिए प्रॉम्प्ट दिखाएं. ज़्यादा जानकारी के लिए, "हमेशा के लिए अनुमति दें" वाली जगह की जानकारी ऐक्सेस करने की अनुमति के लिए अनुरोध करना लेख पढ़ें.