توضّح هذه الصفحة أفضل الممارسات لطلب أذونات استخدام الموقع الجغرافي في الخلفية وإدارتها.
طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت"
بدءًا من الإصدار 14 من نظام التشغيل Android، يجب أن تحصل التطبيقات على إذن
ACCESS_BACKGROUND_LOCATION
للوصول إلى الموقع الجغرافي للمستخدم.
تتضمّن حزمة Navigation SDK هذا الإذن في ملف البيان الخاص بها، لذا لا تحتاج
إلى طلبه صراحةً (إذا لم يكن مطلوبًا لأغراض أخرى)، لأنّ
أداة دمج ملفات بيان Gradle ستضمن دمجه مع بيان التطبيق.
يُرجى العِلم أنّ الحصول على إذن ACCESS_BACKGROUND_LOCATION
لا يكفي
للوصول إلى الموقع الجغرافي في الخلفية، وننصحك بطلب أذونات تحديد الموقع الجغرافي "السماح طوال
الوقت" من المستخدمين. يضمن ذلك إمكانية تشغيل التطبيق في
الخلفية وعرض الإشعارات، ما يزيد من دقة الموقع الجغرافي إلى أقصى حد أثناء
التنقّل.
يجب أن يوضّح الطلب للمستخدمين كيف سيؤدي منح الإذن إلى تحسين دقة الموقع الجغرافي وتحسين تجربة التنقّل عندما يكون التطبيق قيد التشغيل في الخلفية.
لمزيد من المعلومات حول مطالبة المستخدمين بمنح إذن الوصول إلى الموقع الجغرافي، يُرجى الاطّلاع على طلب أذونات تحديد الموقع الجغرافي | أدوات الاستشعار والموقع الجغرافي | مطوّرو Android في مستندات مطوّري تطبيقات Android.
التأكّد من إزالة إشعارات التنقّل بشكلٍ سليم
لضمان عدم إبقاء تطبيقك للإشعارات نشطة بعد أن تصبح غير مطلوبة، احرص على تنفيذ خطوات التنظيف التالية:
- بعد استدعاء
startGuidance()
، احرص على استدعاءstopGuidance()
أوclearDestination()
. - بعد تسجيل "
ArrivalListener
"، يُرجى التأكّد من إلغاء تسجيلها. - بعد تسجيل
RoadSnappedLocationProvider
، احرص على إلغاء تسجيله.
يضمن إكمال هذه الخطوات عدم إبقاء الإشعارات نشطة عندما لم تعُد مطلوبة، ما قد يؤدي إلى استنزاف البطارية وتسرُّب الذاكرة.
عند إعادة استدعاء طرق initForegroundServiceManager في NavigationApi، استخدِم أولاً clearForegroundServiceManager في NavigationApi.
إذا كان تطبيقك يستخدِم ForegroundServiceManager
، استخدِم
NavigationApi#clearForegroundServiceManager
قبل استخدام
NavigationApi#initForegroundServiceManagerProvider
، وإذا سبق أن
تم إعداد ForegroundServiceManager
، استخدِم
NavigationApi#initForegroundServiceManagerMessageAndIntent
. يمكنك إجراء ذلك لتعديل معرّف الإشعار أو محتوى الإشعار بعد إعداد مدير الخدمة التي تعمل في المقدّمة.
لمحة عن القيود الجديدة التي تمّ إدخالها في Android 14
قدّم نظام التشغيل Android 14 (Android U) قيودًا جديدة على التطبيقات التي تصل إلى الموقع الجغرافي للمستخدم في الخلفية. للمساعدة في التخفيف من هذه التغييرات، تم تحديث حزمة Navigation SDK إلى الإصدار 5.4.0 لإدارة الوصول إلى الموقع الجغرافي في الخلفية بشكل أفضل. ننصحك أيضًا بتعديل عملية التنفيذ لضمان استمرار إمكانية وصول تطبيقك إلى بيانات الموقع الجغرافي الأكثر دقة.
كيفية تأثير التغييرات في Android 14 في حزمة تطوير البرامج (SDK) للتنقّل
عند استدعاء
startGuidance()
في تطبيقك، تبدأ الخدمة التي تعمل في المقدّمة بعرض إشعارات للمستخدمين بشأن
التنقّل من خلال التنقلات التفصيلية. يعتمد استخدام اتّجاهات مفصّلة على إمكانية الوصول إلى الموقع الجغرافي للمستخدم من أجل تعديل المسار وعرض الإرشادات المرئية والصوتية الصحيحة. بدءًا من Android 14، يتطلب الوصول إلى
الموقع الجغرافي الدقيق للمستخدم في الخلفية الحصول على إذن من المستخدم. وبشكل تلقائي، إذا لم يكن لدى أحد التطبيقات إذن المستخدم للوصول إلى الموقع الجغرافي في الخلفية
وحاول بدء خدمة تعمل في المقدّمة للحصول على تحديثات الموقع الجغرافي، يعرض النظام
SecurityException
، ما يؤدي إلى تعطُّل التطبيق.
كيفية تخفيف حزمة تطوير البرامج (SDK) للتنقّل من هذه المشكلة
بدءًا من الإصدار 5.4.0، تعالج حزمة تطوير البرامج (SDK) لميزة التنقّل هذه العمليةSecurityException
بدون التأثير في التطبيق، ما يسمح بمواصلة تشغيل ميزة التنقّل في
الخلفية. بالإضافة إلى ذلك، تتضمّن حزمة Navigation SDK إذن
ACCESS_BACKGROUND_LOCATION
في AndroidManifest
. بهذه الطريقة، لن يحتاج
تطبيقك إلى الإفصاح عن الإذن نفسه، لأنّ دمج Gradle سيتولى
ذلك. ومع ذلك، إذا لم يتم عرض إشعار للمستخدم قبل انتقال التطبيق إلى الخلفية، ستعتمد "حزمة SDK للتنقّل" على النظام لتوفير
تحديثات الموقع الجغرافي. قد لا تكون تحديثات النظام هذه متكررة أو دقيقة وينتج عنها تجربة تنقل دون المستوى الأمثل. لهذا السبب، ننصحك أيضًا
بمطالبة المستخدمين بالموافقة على الوصول إلى الموقع الجغرافي في الخلفية.
الإجراءات التي يمكن لمطوّري التطبيقات اتّخاذها لتحسين دقة الموقع الجغرافي للتنقّل
يمكنك تحسين دقة إشارة الموقع الجغرافي التي تستخدمها حزمة تطوير البرامج (SDK) لميزة التنقّل من خلال تحديث تطبيقك لطلب إذن الوصول إلى الموقع الجغرافي في الخلفية من المستخدمين. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت" .