इस पेज पर, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध करने और उन्हें मैनेज करने के सबसे सही तरीके बताए गए हैं.
जगह की जानकारी की अनुमति को "हमेशा के लिए अनुमति दें" के तौर पर सेट करने का अनुरोध करना
Android 14 से, ऐप्लिकेशन के पास उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने के लिए, ACCESS_BACKGROUND_LOCATION अनुमति होनी चाहिए.
Navigation SDK, इस अनुमति को अपनी मेनिफ़ेस्ट फ़ाइल में शामिल करता है. इसलिए, आपको इसके लिए अलग से अनुरोध करने की ज़रूरत नहीं है. हालांकि, अगर आपको अन्य कामों के लिए इसकी ज़रूरत है, तो अनुरोध किया जा सकता है. ऐसा इसलिए, क्योंकि Gradle मेनिफ़ेस्ट मर्जर यह पक्का करेगा कि यह अनुमति, ऐप्लिकेशन के मेनिफ़ेस्ट के साथ मर्ज हो जाए.
हालांकि, बैकग्राउंड में जगह की जानकारी ऐक्सेस करने के लिए, ACCESS_BACKGROUND_LOCATION की अनुमति होना काफ़ी नहीं है. हमारा सुझाव है कि आप उपयोगकर्ताओं से, जगह की जानकारी के लिए "हमेशा अनुमति दें" का अनुरोध करें. इससे यह पक्का होता है कि ऐप्लिकेशन बैकग्राउंड में चल सके और सूचनाएं दिखा सके. इससे नेविगेशन के दौरान, जगह की सटीक जानकारी मिलती है.
प्रॉम्प्ट में उपयोगकर्ताओं को यह बताना चाहिए कि अनुमति देने से, जगह की सटीक जानकारी कैसे मिलेगी. साथ ही, ऐप्लिकेशन के बैकग्राउंड में चलने के दौरान, नेविगेशन का अनुभव कैसे बेहतर होगा.
उपयोगकर्ताओं से जगह की जानकारी ऐक्सेस करने की अनुमति मांगने के बारे में ज़्यादा जानने के लिए, Android डेवलपर के दस्तावेज़ में जगह की जानकारी की अनुमतियों का अनुरोध करना | सेंसर और जगह की जानकारी | Android डेवलपर देखें.
नेविगेशन की सूचनाओं को सही तरीके से हटाने की सुविधा देना
यह पक्का करने के लिए कि आपका ऐप्लिकेशन, सूचनाओं की ज़रूरत न होने पर उन्हें न दिखाए, पक्का करें कि आपने सूचनाएं हटाने के लिए ये तरीके अपनाए हों:
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 से मिलने वाली जगह की जानकारी को ज़्यादा सटीक बनाया जा सकता है. इसके लिए, अपने ऐप्लिकेशन को अपडेट करें, ताकि वह उपयोगकर्ताओं से बैकग्राउंड में जगह की जानकारी ऐक्सेस करने का अनुरोध कर सके. ज़्यादा जानकारी के लिए, जगह की जानकारी की "हमेशा के लिए अनुमति दें" वाली अनुमतियों का अनुरोध करना लेख पढ़ें.