این صفحه بهترین روشها را برای درخواست و مدیریت مجوزهای استفاده از موقعیت مکانی پسزمینه توضیح میدهد.
مجوزهای مکان «همیشه مجاز باشد» را درخواست کنید
با شروع Android 14 ، برنامهها باید مجوز ACCESS_BACKGROUND_LOCATION
را داشته باشند تا به موقعیت مکانی کاربر دسترسی داشته باشند. Navigation SDK این مجوز را در فایل مانیفست خود گنجانده است، بنابراین شما نیازی به درخواست صریح آن ندارید (اگر برای مقاصد دیگر مورد نیاز نیست)، زیرا ادغام مانیفست Gradle اطمینان حاصل می کند که با مانیفست برنامه ادغام شده است.
با این حال، داشتن مجوز ACCESS_BACKGROUND_LOCATION
برای دسترسی به موقعیت مکانی در پسزمینه کافی نیست و توصیه میکنیم مجوزهای مکان «همیشه مجاز باشد» را از کاربران درخواست کنید. این تضمین میکند که برنامه میتواند در پسزمینه اجرا شود و اعلانها را نشان دهد، که دقت مکان را در طول ناوبری به حداکثر میرساند.
درخواست باید به کاربران توضیح دهد که چگونه اعطای مجوز باعث بهبود دقت مکان و بهبود تجربه ناوبری آنها در هنگام اجرای برنامه در پسزمینه میشود.
برای اطلاعات بیشتر در مورد ترغیب کاربران برای دسترسی به موقعیت مکانی، به درخواست مجوزهای مکان | مراجعه کنید سنسورها و مکان | برنامه نویسان اندروید در مستندات برنامه نویس اندروید.
از پاکسازی مناسب اعلانهای ناوبری اطمینان حاصل کنید
برای اطمینان از اینکه برنامه شما اعلانها را بعد از اینکه دیگر مورد نیاز نیستند زنده نگه نمیدارد، مطمئن شوید که مراحل پاکسازی زیر را انجام دادهاید:
- پس از فراخوانی
startGuidance()
، حتماًstopGuidance()
یاclearDestination()
فراخوانی کنید. - پس از ثبت نام
ArrivalListener
، مطمئن شوید که آن را لغو ثبت کنید. - پس از ثبت نام
RoadSnappedLocationProvider
، حتماً آن را لغو ثبت کنید.
تکمیل این مراحل تضمین میکند که اعلانها در زمانی که دیگر مورد نیاز نیستند زنده نمیمانند، که میتواند منجر به تخلیه باتری و نشت حافظه احتمالی شود.
هنگام فراخوانی مجدد متدهای NavigationApi#initForegroundServiceManager، ابتدا NavigationApi#clearForegroundServiceManager را فراخوانی کنید.
اگر برنامه شما از ForegroundServiceManager
استفاده میکند، NavigationApi#clearForegroundServiceManager
قبل از فراخوانی NavigationApi#initForegroundServiceManagerProvider
فراخوانی کنید، و اگر قبلاً ForegroundServiceManager
را مقداردهی کردهاید، NavigationApi#initForegroundServiceManagerMessageAndIntent
را فراخوانی کنید. می توانید این کار را برای به روز رسانی شناسه اعلان یا محتوای اعلان پس از تنظیم اولیه مدیر خدمات پیش زمینه انجام دهید.
درباره محدودیت های جدید معرفی شده در اندروید 14
اندروید 14 (Android U) محدودیتهای جدیدی را برای دسترسی اپلیکیشنها به موقعیت مکانی کاربر در پسزمینه اعمال کرد . برای کمک به کاهش این تغییرات، Navigation SDK در نسخه 5.4.0 بهروزرسانی شد تا دسترسی به موقعیت مکانی پسزمینه را بهتر مدیریت کند. همچنین توصیه میکنیم پیادهسازی خود را بهروزرسانی کنید تا مطمئن شوید که برنامه شما همچنان به دقیقترین دادههای مکان دسترسی دارد.
چگونه تغییرات در Android 14 روی Navigation SDK تأثیر می گذارد
هنگامی که startGuidance()
در برنامه خود فراخوانی می کنید، سرویس پیش زمینه شروع به نمایش اعلان های کاربر برای پیمایش گام به گام می کند. ناوبری گام به گام به امکان دسترسی به مکان کاربر برای به روز رسانی مسیر و نشان دادن راهنمایی های بصری و صوتی صحیح بستگی دارد. با شروع اندروید 14، دسترسی به موقعیت مکانی دقیق کاربر در پسزمینه نیاز به اجازه کاربر دارد. بهطور پیشفرض، اگر برنامهای مجوز کاربر برای دسترسی به موقعیت مکانی پسزمینه را نداشته باشد و تلاش کند یک سرویس پیشزمینه برای بهروزرسانی موقعیت مکانی راهاندازی کند، سیستم یک SecurityException
را پرتاب میکند که باعث از کار افتادن برنامه میشود.
چگونه Navigation SDK این مشکل را کاهش می دهد
با شروع نسخه 5.4.0، Navigation SDK این SecurityException
بدون تأثیرگذاری بر برنامه مدیریت میکند و به ناوبری اجازه میدهد در پسزمینه اجرا شود. علاوه بر این، Navigation SDK شامل مجوز ACCESS_BACKGROUND_LOCATION
در AndroidManifest
خود است. به این ترتیب، برنامه شما نیازی به اعلام مجوز خود ندارد، زیرا ادغام Gradle آن را مدیریت می کند. با این حال، اگر قبل از رفتن برنامه به پسزمینه، اعلانی برای کاربر نمایش داده نشود، SDK ناوبری برای ارائه بهروزرسانیهای مکان به سیستم تکیه میکند. این بهروزرسانیهای سیستم ممکن است مکرر یا دقیق نباشند و منجر به تجربه ناوبری کمتر از حد مطلوب شوند. به همین دلیل، توصیه می کنیم از کاربران نیز برای دسترسی به موقعیت مکانی پس زمینه بخواهید.
برنامهنویسان چه کاری میتوانند برای بهبود دقت مکان برای ناوبری انجام دهند
میتوانید دقت سیگنال موقعیت مکانی مورد استفاده توسط Navigation SDK را با بهروزرسانی برنامهتان بهبود ببخشید تا کاربران را برای دسترسی به موقعیت مکانی در پسزمینه درخواست کند. برای اطلاعات بیشتر، به درخواست مجوزهای مکان «همیشه مجاز باشد» مراجعه کنید.