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

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

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

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

Android 14 में हुए बदलावों का, नेविगेशन SDK टूल पर क्या असर पड़ता है

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

नेविगेशन SDK टूल इस समस्या को कैसे कम करता है

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

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

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