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

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

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

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

تأثير التغييرات في Android 14 على حزمة تطوير البرامج (SDK) للتنقّل

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

كيفية تخفيف حزمة تطوير البرامج (SDK) للتنقّل من حدّة هذه المشكلة

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

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

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