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

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

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

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

يتم الاحتفاظ بسلوك تطبيق واجهة المستخدم.

إذا كان هناك تطبيق يعمل في المقدّمة على جهاز يعمل بالإصدار 8.0 من نظام التشغيل Android (المستوى 26 من واجهة برمجة التطبيقات)، يكون سلوك تحديث الموقع الجغرافي مطابقًا للسلوك في الإصدار 7.1.1 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 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 نتائج مخزّنة مؤقتًا من الفحص السابق.