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

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

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

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

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

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