أفضل الممارسات لاستخدام الموقع الجغرافي في الخلفية

توضّح هذه الصفحة أفضل الممارسات لطلب أذونات استخدام الموقع الجغرافي في الخلفية وإدارتها.

طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت"

اعتبارًا من Android 14، يجب أن تتضمّن التطبيقات إذن 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

فرض Android 14 (Android U) قيودًا جديدة على التطبيقات التي تصل إلى موقع المستخدم الجغرافي في الخلفية. للمساعدة في التخفيف من تأثير هذه التغييرات، تم تعديل حزمة Navigation SDK في الإصدار 5.4.0 لإدارة رصد الموقع الجغرافي في الخلفية بشكلٍ أفضل. ننصحك أيضًا بتعديل عملية التنفيذ لضمان استمرار وصول تطبيقك إلى بيانات الموقع الجغرافي الأكثر دقة.

تأثير التغييرات في Android 14 على حزمة Navigation SDK

عند استدعاء startGuidance() في تطبيقك، تبدأ الخدمة التي تعمل في المقدّمة بعرض إشعارات الاتجاهات المفصّلة للمستخدمين. تعتمد الاتجاهات المفصّلة على إمكانية الوصول إلى موقع المستخدم الجغرافي لتعديل المسار وعرض الإرشادات المرئية والصوتية الصحيحة. اعتبارًا من Android 14، يتطلّب الوصول إلى الموقع الجغرافي الدقيق للمستخدم في الخلفية الحصول على إذن من المستخدم. بشكل تلقائي، إذا لم يكن لدى التطبيق إذن من المستخدم لرصد الموقع الجغرافي في الخلفية وحاول بدء خدمة تعمل في المقدّمة لتلقّي آخر المعلومات عن الموقع الجغرافي، يعرض النظام SecurityException، ما يؤدي إلى تعطُّل التطبيق.

كيفية التخفيف من تأثير هذه المشكلة في حزمة Navigation SDK

اعتبارًا من الإصدار 5.4.0، تتعامل حزمة Navigation SDK مع SecurityException بدون التأثير في التطبيق، ما يسمح باستمرار تشغيل التنقّل في الخلفية. بالإضافة إلى ذلك، تتضمّن حزمة Navigation SDK إذن ACCESS_BACKGROUND_LOCATION في AndroidManifest. بهذه الطريقة، لا يحتاج تطبيقك إلى الإعلان عن الإذن بنفسه، لأنّ عملية الدمج في Gradle ستتولّى ذلك. ومع ذلك، إذا لم يتم عرض إشعار للمستخدم قبل انتقال التطبيق إلى الخلفية، ستعتمد حزمة Navigation SDK على النظام لتوفير آخر المعلومات عن الموقع الجغرافي. قد لا تكون آخر المعلومات عن الموقع الجغرافي التي يوفّرها النظام دقيقة أو متكررة، ما يؤدي إلى تجربة تنقّل غير مثالية. لهذا السبب، ننصحك أيضًا بمطالبة المستخدمين بمنح إذن رصد الموقع الجغرافي في الخلفية.

ما يمكن لمطوّري التطبيقات فعله لتحسين دقة الموقع الجغرافي للتنقّل

يمكنك تحسين دقة إشارة الموقع الجغرافي التي تستخدمها حزمة Navigation SDK عن طريق تعديل تطبيقك لمطالبة المستخدمين بمنح إذن رصد الموقع الجغرافي في الخلفية. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة طلب أذونات تحديد الموقع الجغرافي "السماح طوال الوقت".