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