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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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