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