يوضّح هذا القسم بعض السيناريوهات الشائعة لجمع المواقع الجغرافية، بالإضافة إلى اقتراحات للاستخدام الأمثل لواجهات برمجة التطبيقات لحدود جغرافية ومزوّد خدمة الموقع الجغرافي المدمج.
التعديلات التي تظهر للمستخدم أو التي يتم إجراؤها في المقدّمة
مثال: تطبيق خرائط يحتاج إلى تحديثات دقيقة ومتكرّرة مع وقت استجابة منخفض جدًا تحدث جميع التعديلات في المقدّمة: يبدأ المستخدم نشاطًا، ويستهلك بيانات الموقع الجغرافي، ثم يوقف النشاط بعد فترة قصيرة.
استخدِم الطريقة setPriority()
مع القيمة
PRIORITY_HIGH_ACCURACY
أو PRIORITY_BALANCED_POWER_ACCURACY
.
يعتمد الفاصل الزمني المحدّد في طريقة setInterval()
على حالة الاستخدام: في سيناريوهات الوقت الفعلي، اضبط القيمة على بضع ثوانٍ، وإلا، اضبطها على بضع دقائق (ننصح باستخدام دقيقتين تقريبًا أو أكثر لتقليل استخدام البطارية).
معرفة الموقع الجغرافي للجهاز
مثال: يريد تطبيق الطقس معرفة الموقع الجغرافي للجهاز.
استخدِم الطريقة getLastLocation()
التي تعرض الموقع الجغرافي المتاح مؤخرًا (قد يكون فارغًا في حالات نادرة). توفّر هذه الطريقة
طريقة مباشرة للحصول على الموقع الجغرافي ولا تكبّد التكاليف المرتبطة
بطلب تحديثات الموقع الجغرافي بشكل نشط. استخدِم هذه الطريقة مع الوسيطة
isLocationAvailable()
التي تعرض القيمة true
عندما يكون الموقع الجغرافي
الذي تعرضه getLastLocation()
محدّثًا بشكل معقول.
بدء التحديثات عندما يكون المستخدم في موقع جغرافي محدّد
مثال: طلب آخر الأخبار عندما يكون المستخدم ضمن مسافة معيّنة من مكان العمل أو المنزل أو موقع جغرافي آخر
استخدام ميزة الحدّ الجغرافي مع تحديثات مقدّمي خدمات الموقع الجغرافي المجمّع يمكنك طلب التعديلات عندما يتلقّى التطبيق عامل تشغيل لعبور حدود منطقة جغرافية، وإزالة تعديلات التطبيق عندما يتلقّى عامل تشغيل لمغادرة حدود منطقة جغرافية. يضمن ذلك حصول التطبيق على معلومات أكثر دقة عن الموقع الجغرافي فقط عندما يدخل المستخدم منطقة محدّدة.
يمكن أن يتضمّن سير العمل المعتاد لهذا السيناريو عرض إشعار عند الانتقال إلى حدود الجغرافية، وبدء نشاط يحتوي على رمز لطلب التحديثات عندما ينقر المستخدم على الإشعار.
بدء التحديثات استنادًا إلى حالة نشاط المستخدم
مثال: طلب التحديثات فقط عندما يكون المستخدم يقود سيارة أو يقود دراجة
استخدِم Activity Recognition API مع تحديثات مقدّمي خدمات تحديد الموقع الجغرافي المدمَج. طلب التحديثات عند رصد النشاط المستهدَف، وإزالة التحديثات عندما يتوقف المستخدم عن تنفيذ هذا النشاط
يمكن أن يتضمّن سير العمل المعتاد لحالة الاستخدام هذه عرض إشعار بالنشاط الذي تم رصده، وبدء نشاط يحتوي على رمز لطلب التحديثات عندما ينقر المستخدم على الإشعار.
إشعارات رصد الموقع الجغرافي في الخلفية التي تستمر لفترة طويلة والمرتبطة بمناطق جغرافية
مثال: يريد المستخدم تلقّي إشعار عندما يكون الجهاز قريبًا من أحد بائعي التجزئة.
هذه حالة استخدام ممتازة لميزة وضع حدود جغرافية. بما أنّ حالة الاستخدام تتعلّق بالتأكيد
باستخدام الموقع الجغرافي في الخلفية، استخدِم أسلوب
addGeofences(GeofencingRequest, PendingIntent)
.
عليك ضبط خيارات الضبط التالية:
إذا كنت تتتبّع عمليات النقل إلى مرحلة التصفّح، استخدِم طريقة
setLoiteringDelay()
مع ضبط قيمة تبلغ خمس دقائق تقريبًا أو أقل.استخدِم
setNotificationResponsiveness()
، مع ضبط القيمة على خمس دقائق تقريبًا. ومع ذلك، ننصحك باستخدام قيمة تبلغ عشرة دقائق تقريبًا إذا كان بإمكان تطبيقك التعامل مع التأخير الإضافي في الاستجابة.
يمكن للتطبيق تسجيل 100 حدود جغرافية كحد أقصى في المرة الواحدة. في أحد حالات الاستخدام حيث يريد التطبيق تتبُّع عدد كبير من خيارات بائعي التجزئة، قد يريد التطبيق تسجيل حدود جغرافية كبيرة (على مستوى المدينة) وتسجيل حدود جغرافية أصغر حجمًا ديناميكيًا (للمواقع الجغرافية داخل المدينة) للمتاجر ضمن الحدود الجغرافية الأكبر حجمًا. عندما يدخل المستخدم إلى حدود جغرافية كبيرة، أضِف حدودًا جغرافية أصغر. وعندما يغادر المستخدمحدودًا جغرافية كبيرة، أزِل الحدود الجغرافية الأصغر وأعِد تسجيل الحدود الجغرافية لمنطقة جديدة.
تحديثات الموقع الجغرافي التي تعمل لفترة طويلة في الخلفية بدون مكوّن تطبيق مرئي
مثال: تطبيق يتتبّع الموقع الجغرافي بشكل سلبي
استخدِم طريقة setPriority()
مع خيار PRIORITY_NO_POWER
إن أمكن، لأنّه لا يستهلك طاقة البطارية تقريبًا. إذا لم يكن استخدام PRIORITY_NO_POWER
ممكنًا، استخدِم PRIORITY_BALANCED_POWER_ACCURACY
أو
PRIORITY_LOW_POWER
، ولكن تجنَّب استخدام PRIORITY_HIGH_ACCURACY
للقيام بأعمال مستمرة في الخلفية لأنّ هذا الخيار يستنزف شحن البطارية بشكل كبير.
إذا كنت بحاجة إلى مزيد من بيانات الموقع الجغرافي، استخدِم الموقع الجغرافي السلبي من خلال استدعاء setFastestInterval()
مع تمرير قيمة أصغر من القيمة التي تمررها إلى setInterval()
. عند دمج هذا الخيار مع خيار PRIORITY_NO_POWER
، يمكن أن يقدّم الموقع الجغرافي التلقائي الموقع الجغرافي الذي تحسبه
تطبيقات أخرى بدون أي تكلفة إضافية.
معدّل تكرار معتدل من خلال إضافة بعض وقت الاستجابة، باستخدام الطريقة setMaxWaitTime()
على سبيل المثال، إذا كنت تستخدم طريقة setinterval()
مع قيمة
10 دقائق تقريبًا، ننصحك باستخدام طريقة setMaxWaitTime()
مع قيمة
تتراوح بين 30 و60 دقيقة. باستخدام هذه الخيارات، يتم احتساب الموقع الجغرافي
لتطبيقك كل 10 دقائق تقريبًا، ولكن لا يتم تنشيط التطبيق إلا كل 30
إلى 60 دقيقة مع توفُّر بعض بيانات الموقع الجغرافي كتعديل مجمّع. ويؤدي هذا النهج
إلى زيادة وقت الاستجابة مقابل توفُّر المزيد من البيانات وتحسين أداء البطارية.
عمليات تعديل متكررة عالية الدقة أثناء تفاعل المستخدم مع تطبيقات أخرى
مثال: تطبيق تنقّل أو لياقة بدنية يستمر في العمل عندما يُطفئ المستخدم الشاشة أو يفتح تطبيقًا آخر
استخدام خدمة تعمل في المقدّمة إذا كان من المحتمل أن ينفّذ تطبيقك عملاً باهظ التكلفة نيابةً عن المستخدم، من الممارسات المُقترَحة إعلام المستخدم بذلك. تتطلّب الخدمة التي تعمل في المقدّمة إشعارًا دائمًا. لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على الإشعارات.