توضّح هذه الصفحة أفضل الممارسات لطلب أذونات استخدام الموقع الجغرافي في الخلفية وإدارتها.
طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت"
اعتبارًا من Android 14، يجب أن تتضمّن التطبيقات إذن
ACCESS_BACKGROUND_LOCATION للوصول إلى الموقع الجغرافي للمستخدم.
تتضمّن حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation هذا الإذن في ملف البيان، لذا لن تحتاج إلى طلبه بشكل صريح (إذا لم يكن مطلوبًا لأغراض أخرى)، لأنّ أداة دمج ملفات البيان في 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) قيودًا جديدة على التطبيقات التي تصل إلى بيانات الموقع الجغرافي للمستخدم في الخلفية. للمساعدة في تخفيف الأثر من هذه التغييرات، تم تعديل حزمة تطوير البرامج (SDK) للتنقّل في الإصدار 5.4.0 بهدف إدارة رصد الموقع الجغرافي في الخلفية بشكل أفضل. ننصحك أيضًا بتعديل عملية التنفيذ لضمان استمرار وصول تطبيقك إلى بيانات الموقع الجغرافي الأكثر دقة.
تأثير التغييرات في Android 14 على حزمة تطوير البرامج للتنقّل
عند استدعاء
startGuidance()
في تطبيقك، تبدأ خدمة تعمل في المقدّمة في عرض إشعارات للمستخدمين بشأن
الاتجاهات المفصّلة. يعتمد التنقّل باتّجاهات مفصّلة على إمكانية الوصول إلى الموقع الجغرافي للمستخدم من أجل تعديل المسار وعرض الإرشادات المرئية والصوتية الصحيحة. بدءًا من نظام التشغيل Android 14، يتطلّب الوصول إلى بيانات الموقع الجغرافي الدقيق للمستخدم في الخلفية الحصول على إذن منه. بشكلٍ تلقائي، إذا لم يحصل تطبيق على إذن المستخدم برصد الموقع الجغرافي في الخلفية وحاول بدء خدمة تعمل في المقدّمة لتلقّي آخر المعلومات عن الموقع الجغرافي، سيُطلق النظام SecurityException، ما يؤدي إلى تعطُّل التطبيق.
كيفية الحدّ من هذه المشكلة في حزمة تطوير البرامج للتنقّل
بدءًا من الإصدار 5.4.0، تتعامل حزمة Navigation SDK مع هذا الخطأ SecurityException
بدون التأثير في التطبيق، ما يتيح استمرار تشغيل التنقّل في الخلفية. بالإضافة إلى ذلك، تتضمّن حزمة Navigation SDK الإذن
ACCESS_BACKGROUND_LOCATION في AndroidManifest. بهذه الطريقة، لن يحتاج تطبيقك إلى الإفصاح عن الإذن بنفسه، لأنّ عملية الدمج في Gradle ستتولّى ذلك. ومع ذلك، إذا لم يتم عرض إشعار للمستخدم قبل أن ينتقل التطبيق إلى الخلفية، ستعتمد حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation على النظام لتوفير آخر المعلومات عن الموقع الجغرافي. وقد لا تكون تحديثات النظام هذه متكررة أو دقيقة، ما يؤدي إلى تجربة تنقّل غير مثالية. لهذا السبب، ننصحك أيضًا بطلب إذن المستخدمين بالوصول إلى رصد الموقع الجغرافي في الخلفية.
الإجراءات التي يمكن لمطوّري التطبيقات اتّخاذها لتحسين دقة الموقع الجغرافي لأغراض التنقّل
يمكنك تحسين دقة إشارة الموقع الجغرافي التي تستخدمها حزمة Navigation SDK من خلال تعديل تطبيقك لطلب إذن المستخدمين بالوصول إلى بيانات رصد الموقع الجغرافي في الخلفية. لمزيد من المعلومات، اطّلِع على طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت".