حدود رصد الموقع الجغرافي في الخلفية

في إطار الجهود المبذولة لتقليل استهلاك الطاقة، يحدّ نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) من عدد المرات التي يمكن للتطبيق فيها استرداد الموقع الجغرافي الحالي للمستخدم أثناء تشغيل التطبيق في الخلفية. في ظلّ هذه الظروف، يمكن للتطبيقات تلقّي معلومات الموقع الجغرافي بضع مرات فقط في كل ساعة.

ملاحظة: تنطبق هذه القيود على جميع التطبيقات المستخدَمة على الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android (المستوى 26 من واجهة برمجة التطبيقات) أو إصدار أحدث، بغض النظر عن الإصدار المستهدف من حزمة تطوير البرامج (SDK) للتطبيق.

من المهم بشكلٍ خاص مراعاة سلوك استرجاع الموقع الجغرافي هذا إذا كان تطبيقك يعتمد على التنبيهات في الوقت الفعلي أو رصد الحركة أثناء تشغيله في الخلفية.

يتم الاحتفاظ بسلوك التطبيق الذي يعمل في المقدّمة

إذا كان التطبيق قيد التشغيل في المقدّمة على جهاز يعمل بنظام التشغيل Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات)، سيكون سلوك تحديث الموقع الجغرافي مطابقًا لسلوكه في الإصدار 7.1.1 من Android (المستوى 25 لواجهة برمجة التطبيقات) والإصدارات الأقدم.

تحذير: إذا كان تطبيقك يسترجع تعديلات الموقع الجغرافي بالقرب من الوقت الفعلي على مدار فترة زمنية طويلة، يصبح عمر بطارية الجهاز أقصر بكثير.

ضبط سلوك الموقع الجغرافي لتطبيقك

يجب النظر في ما إذا كانت حالات استخدام تطبيقك للتشغيل في الخلفية لن تتمكّن من النجاح على الإطلاق في حال تلقّي تطبيقك تعديلات غير متكررة على الموقع الجغرافي. في هذه الحالة، يمكنك استرداد تعديلات الموقع الجغرافي بشكلٍ متكرّر من خلال تنفيذ أحد الإجراءَين التاليَين:

  • اعرض تطبيقك في المقدّمة.
  • ابدأ خدمة تعمل في المقدّمة في تطبيقك من خلال استدعاء startForegroundService(). عندما تكون هذه الخدمة التي تعمل في المقدّمة نشطة، يظهر الإشعار المستمر في منطقة الإشعارات.

    تحذير: إذا بدأ تطبيقك خدمة تعمل في المقدّمة أثناء تشغيله في الخلفية على جهاز يعمل بالإصدار 11 من نظام التشغيل Android (المستوى ‫30 لواجهة برمجة التطبيقات) أو إصدار أحدث، لا يمكن لتطبيقك الوصول إلى معلومات الموقع الجغرافي ما لم يمنح مستخدمه إذن ACCESS_BACKGROUND_LOCATION لتطبيقك. لمزيد من المعلومات، اطّلِع على الإرشادات حول قيود الاستخدام أثناء التشغيل المرتبطة بالخدمات التي تعمل في المقدّمة.

  • استخدِم عناصر واجهة برمجة التطبيقات Geofencing API، مثل GeofencingClient، التي تم تحسينها لتقليل استهلاك الطاقة.
  • استخدام مستمع موقع جغرافي سلبي قد يتلقّى تحديثات الموقع الجغرافي بشكل أسرع إذا كانت هناك تطبيقات في المقدّمة تطلب تحديثات الموقع الجغرافي بمعدّل أسرع

ملاحظة: إذا كان تطبيقك يحتاج إلى الوصول إلى سجلّ المواقع الجغرافية الذي يحتوي على تعديلات متكرّرة حسب الوقت، استخدِم الإصدار المجمّع من عناصر واجهة برمجة التطبيقات Fused Location Provider API، مثل واجهة FusedLocationProviderApi. عندما يكون تطبيقك قيد التشغيل في الخلفية، تتلقّى واجهة برمجة التطبيقات هذه الموقع الجغرافي للمستخدم بشكلٍ أكثر تكرارًا من واجهة برمجة التطبيقات غير المجمّعة. يُرجى العِلم، مع ذلك، أنّ تطبيقك سيستمر في تلقّي التحديثات على دفعات بضع مرات فقط في كل ساعة.

واجهات برمجة التطبيقات المتأثرة

تؤثر التغييرات في سلوك استرداد الموقع الجغرافي في التطبيقات التي تعمل في الخلفية على واجهات برمجة التطبيقات التالية:

موفِّر الموقع المدمج (FLP)
  • إذا كان تطبيقك قيد التشغيل في الخلفية، تعمل خدمة نظام الموقع الجغرافي على احتساب موقع جغرافي جديد لتطبيقك بضع مرات فقط في كل ساعة. وينطبق ذلك حتى عندما يطلب تطبيقك تعديلات على الموقع الجغرافي بشكل متكرر.

    باستخدام الإصدار المجمّع من FLP، يمكنك الوصول إلى المزيد من سجلّ المواقع الجغرافية بشكل متكرّر بعد أن يتلقّى تطبيقك تحديثًا مجمّعًا، والذي يحدث أيضًا بضع مرات فقط في الساعة.

  • إذا كان تطبيقك قيد التشغيل في المقدّمة، لن يحدث أي تغيير في معدّلات تحليل الموقع الجغرافي مقارنةً بنظام التشغيل Android 7.1.1 (المستوى 25 لواجهة برمجة التطبيقات).
وضع الحدود الجغرافية
  • يمكن للتطبيقات التي تعمل في الخلفية تلقّي أحداث انتقال حدود المنطقة الجغرافية بشكلٍ أكثر تكرارًا من التعديلات الواردة من "موفِّر الموقع الجغرافي المجمّع".
  • يكون متوسّط وقت الاستجابة لحدث وضع حدود جغرافية كل بضع دقائق تقريبًا.
قياسات نظام تحديد المواقع العالمي (GNSS) ورسائل التنقّل في نظام تحديد المواقع العالمي (GNSS)
  • عندما يكون تطبيقك في الخلفية، يتم إيقاف تنفيذ وظائف الاستدعاء المسجَّلة لتلقّي النتائج من GnssMeasurement وGnssNavigationMessage.
إدارة المواقع الجغرافية
  • يتم إرسال معلومات الموقع الجغرافي إلى التطبيقات التي تعمل في الخلفية بضع مرات فقط في كل ساعة.

    ملاحظة: إذا كان تطبيقك يعمل على جهاز تم تثبيت "خدمات Google Play" عليه، ننصحك بشدة باستخدام موفِّر الموقع الجغرافي المدمج (FLP) بدلاً من ذلك.

مدير شبكة Wi-Fi
لا تُجري طريقة startScan() سوى فحص كامل للتطبيقات التي تعمل في الخلفية بضع مرات فقط في الساعة. إذا استدعى أحد التطبيقات التي تعمل في الخلفية الطريقة مرة أخرى بعد ذلك بوقت قصير، تقدّم فئة WifiManager النتائج المخزّنة مؤقتًا من عملية الفحص السابقة.