يصف هذا المستند أفضل الممارسات المتعلّقة بكيفية تحسين استهلاك الطاقة في تطبيق تنقّل على الأجهزة الجوّالة يتم إنشاؤه باستخدام حزمة تطوير البرامج (SDK) للتنقّل. وفي الوقت نفسه، يصف الحلول الوسط التي يجب مراعاتها عند استخدام هذه الممارسات. وعلى وجه الخصوص، يتناول هذا المستند ما يلي:
- مصادر استهلاك الطاقة العالية، مرتّبة من الأعلى إلى الأدنى
- استراتيجيات تحسين استهلاك الطاقة، حسب الأهمية، بدءًا من عدد اللقطات في الثانية.
- استراتيجيات المستخدمين النهائيين لتثقيف مستخدمي تطبيقك حول كيفية إدارة استخدام أجهزتهم أثناء التنقّل
لماذا يجب تحسين تطبيق التنقّل؟
بناءً على الموقف، قد يشغّل مستخدمو تطبيقك إرشادات التنقّل لفترات زمنية طويلة. على سبيل المثال، يمكن لسائقي التوصيل العمل لساعات طويلة، وإكمال المهام في مناطق غير مألوفة. وفي هذه الحالات، يعتمدون بشكل كبير على الاتّجاهات المفصّلة داخل التطبيق. يؤدي ذلك إلى بعض المشاكل المعتادة:
- استنزاف البطارية وتوفّر الشواحن يمكن أن يؤدي الاستخدام المكثف للتنقل إلى استنزاف بطاريات الجهاز بشكل أسرع من المتوقع. في حين أن العديد من المستخدمين يمكنهم معالجة ذلك عن طريق شحن أجهزتهم في السيارة، فإن سائقي العجلتين لا يمكنهم ذلك.
- تقييد أداء الجهاز بسبب ارتفاع درجة حرارته حتى المستخدمين الذين يشحنون أجهزتهم باستمرار يمكن أن يواجهوا مشاكل. يمكن أن يؤدي استهلاك الطاقة العالي على مدار فترات زمنية طويلة إلى ارتفاع درجة حرارة الجهاز، ما يؤدي إلى تقييد الأداء الحراري وفقدان الأداء لاحقًا.
تعتمد تطبيقات الاتجاهات المفصّلة على ميزات تستهلك قدرًا كبيرًا من الطاقة، مثل الشاشة ونظام تحديد المواقع العالمي (GPS) والاتصال اللاسلكي بأبراج الاتصالات، لذا من أفضل الممارسات تحسين استهلاك الطاقة في تطبيقك المتوافق مع الأجهزة الجوّالة. بالإضافة إلى ذلك، يجب مراعاة احتياجات جمهورك المستهدف من استهلاك الطاقة حتى تتمكّن من إجراء المفاضلات المناسبة بين الأداء وتحسين استهلاك الطاقة.
ما الذي يستهلك أكبر قدر من الطاقة؟
يقسّم هذا القسم الأنشطة في التطبيق المرتبطة باستهلاك الطاقة العالي إلى فئتين:
- عرض الشاشة
- تحديثات الموقع
عرض الشاشة
عادةً ما يتسبب عرض الشاشة في أعلى استهلاك للطاقة في تطبيقات التنقل على الأجهزة الجوّالة. في كل مرة يرسم فيها الجهاز خريطة وعناصر أخرى في واجهة المستخدم على الشاشة، يعتمد على معالجة وحدة معالجة الرسومات ووحدة المعالجة المركزية. وبالمثل، عندما يترك المستخدم تلك الشاشة قيد التشغيل لفترات طويلة، فإن ذلك يستهلك أيضًا المزيد من الطاقة.
إلى حدٍّ ما، يمكنك توقُّع استهلاك عالٍ للطاقة من السائقين أو الركّاب الذين يعتمدون على خريطة مرئية للتنقّل، خاصةً إذا كانوا يستخدمون التطبيق بشكل مستمر لعدة ساعات. في هذا السيناريو، ينفّذ التطبيق أيضًا معدّل عرض أعلى على الشاشة لأنّ الخريطة يتم تحديثها في الوقت الفعلي. في بعض الحالات، يمكن إعادة رسم الشاشة بشكل مستمر تقريبًا، خاصةً عندما ينتقل المستخدم من موقع جغرافي إلى آخر بدون توقف.
تحديثات الموقع
بالإضافة إلى عرض الشاشة، يستهلك نشاطان آخران للتنقّل طاقة الجهاز:
- استخدام برج الاتصالات اللاسلكية ونظام تحديد المواقع العالمي (GPS)
- تعديل الموقع الجغرافي ومشاركته، مثلاً لتقديم وقت وصول متوقّع أو الإبلاغ عن مواقع مركبة في أسطول
يعتمد كل من نظام تحديد المواقع العالمي (GPS) والاتصال اللاسلكي الخلوي على عمليات بدء التشغيل التي تستهلك قدرًا كبيرًا من الطاقة: يجب أن يعثر نظام تحديد المواقع العالمي (GPS) على الأقمار الصناعية ويجب أن تتفاوض أجهزة الراديو الخلوية مع الأبراج و إنشاء اتصال. لهذه الأسباب، يتم تشغيلها بشكل مستمر أثناء التنقل، على الرغم من أن أجهزة الراديو الخلوية تظل نشطة لمدة 20-30 ثانية في محاولة لتقليل تكاليف بدء التشغيل. يتحكم نظام التشغيل في هذه الإعدادات التي لا يمكنك تكوينها بسهولة في تطبيقك.
بالنسبة إلى الإشعارات بشأن الموقع الجغرافي، يختلف استهلاك الطاقة استنادًا إلى عوامل غير متوقّعة. على سبيل المثال، تحدّد المسافة بين الجهاز ومحطة الاتصال الخلوية مقدار استهلاك الطاقة، لأنّ الجهاز سيستخدم الحد الأدنى من الإشارة اللازمة لمواصلة التنقّل لتجنُّب التبديل بين أبراج الاتصال. لذلك، فإنّ الجهاز الذي يتنقّل في منطقة ذات إمكانية اتصال ضعيفة سيستخدم طاقة أكثر من الجهاز القريب من محطة أساسية. بالإضافة إلى ذلك، قد تشارك بعض التطبيقات إشعارات بشأن الموقع الجغرافي مع خدمة إدارة الأسطول المركزية، وبالتالي ستحتاج إلى التواصل مع خادم لإنجاز ذلك.
تحسين استهلاك الطاقة في تطبيقك
تكمن صعوبة تحسين استهلاك الطاقة في تطبيقات التنقّل في أنّ هذه التطبيقات تعتمد بشكل كبير على الموارد التي تستهلك قدرًا كبيرًا من الطاقة، ما يحدّ من خياراتك لتقليل التأثير بدون تقديم تنازلات، مثل تقييد استخدام الشاشة. يقدّم هذا القسم قائمة بالأساليب التي يمكنك اتّباعها عند تحسين تطبيقك، بالترتيب من الأكثر إلى الأقل تأثيرًا.
تغيير عدد اللقطات في الثانية
تُحدِّث الشاشة ما تعرضه بمعدّل يُعرف باسم عدد اللقطات في الثانية، ويُقاس عادةً بعدد اللقطات في الثانية (FPS). بما أنّ عرض الشاشة يستهلك قدرًا كبيرًا من طاقة وحدة المعالجة المركزية ووحدة معالجة الرسومات، يمكنك تقليل عدد اللقطات في الثانية لتوفير الطاقة.
عند تقليل عدد اللقطات في الثانية، قد يظهر عرض الخريطة والإيماءات التفاعلية (مثل التحريك أو التكبير أو التصغير أو التدوير) بشكل أقل سلاسة. لتحقيق التوازن بين كفاءة استهلاك الطاقة وتوفير تجربة مستخدم سريعة الاستجابة، يمكنك الحفاظ على عدد لقطات منخفض في الثانية وزيادته ديناميكيًا أثناء تفاعلات المستخدم النشطة.
على أجهزة iOS، تعرض حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS السمة preferredFrameRate فيGMSMapView للتحكّم في عدد اللقطات في الثانية. يعرض الجدول التالي
قيم GMSFrameRate التي يمكنك تعديلها:
| قيمة Swift | قيمة Objective-C | الوصف |
|---|---|---|
.powerSave |
kGMSFrameRatePowerSave |
استخدِم الحدّ الأدنى لعدد اللقطات في الثانية للحفاظ على عمر البطارية. |
.conservative |
kGMSFrameRateConservative |
استخدِم عدد لقطات في الثانية متوسطًا لتوفير عرض أكثر سلاسة والحفاظ على دورات المعالجة. |
.maximum |
kGMSFrameRateMaximum |
استخدِم الحد الأقصى لعدد اللقطات في الثانية على الجهاز (30 لقطة في الثانية للأجهزة المنخفضة المواصفات، و60 لقطة في الثانية للأجهزة العالية المواصفات). |
للاطّلاع على مرجع، يُرجى مراجعة GMSFrameRate في مستندات حزمة تطوير البرامج (SDK) للتنقّل على أجهزة iOS.
لضبط عدد اللقطات في الثانية المفضّل مباشرةً، حدِّد قيمة لسمة
mapView.preferredFrameRate:
Swift
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = .powerSave
Objective-C
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
ضبط عدد اللقطات في الثانية ديناميكيًا أثناء الإيماءات
يمكن أن تؤدي معدلات عدد اللقطات في الثانية المنخفضة إلى جعل تفاعلات المستخدم (مثل العرض الشامل والتكبير أو التصغير والتدوير) تبدو متقطعة. يمكنك الحفاظ على سلاسة التفاعلات مع توفير الطاقة من خلال زيادة عدد اللقطات في الثانية مؤقتًا إلى الحد الأقصى أثناء الإجراءات التفاعلية من المستخدم، ثم العودة إلى عدد اللقطات في الثانية الموفِّر للطاقة عند انتهاء الإجراء التفاعلي.
لإجراء ذلك، عليك اعتماد بروتوكول GMSMapViewDelegate وتنفيذ الطرق التالية:
- في
mapView:willMove:، تحقَّق مما إذا كان قد تم بدء حركة الكاميرا من خلال إجراء تفاعلي من المستخدم. إذا كانgestureهوtrue، اضبطpreferredFrameRateعلى الحد الأقصى. - في "
mapView:idleAtCameraPosition:"، يمكنك إعادة "preferredFrameRate" إلى وضع توفير الطاقة عندما تصبح الكاميرا غير نشطة.
يوضّح مثال الرمز التالي كيفية تعديل عدد اللقطات في الثانية ديناميكيًا أثناء الإجراءات التفاعلية من المستخدم:
Swift
class YourViewController: UIViewController {
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
// Set a baseline low frame rate to conserve power:
mapView.preferredFrameRate = .powerSave
}
}
// MARK: - GMSMapViewDelegate
extension YourViewController: GMSMapViewDelegate {
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
// Increase frame rate during user gestures for smooth interaction:
if gesture {
mapView.preferredFrameRate = .maximum
}
}
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = .powerSave
}
}
Objective-C
@interface YourViewController : UIViewController <GMSMapViewDelegate>
@end
@implementation YourViewController {
GMSMapView *_mapView;
}
- (void)viewDidLoad {
[super viewDidLoad];
_mapView.delegate = self;
// Set a baseline low frame rate to conserve power:
_mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
#pragma mark - GMSMapViewDelegate
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
// Increase frame rate during user gestures for smooth interaction:
if (gesture) {
mapView.preferredFrameRate = kGMSFrameRateMaximum;
}
}
- (void)mapView:(GMSMapView *)mapView
idleAtCameraPosition:(GMSCameraPosition *)position {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
@end
التنقّل بدون خريطة
على الرغم من أنّه لا يمكنك التحكّم في كيفية ضبط المستخدم النهائي لسطوع شاشة جهازه أو مدة إبقاء الشاشة قيد التشغيل، يمكنك توفير خيار لإرشادات التنقّل بدون خريطة. سيسمح ذلك للمستخدم النهائي بتحديد هذا الخيار من أجل الحفاظ على الطاقة. على سبيل المثال، إذا كان السائقون يعملون بانتظام في نفس الحي، فقد لا يحتاجون إلى إرشادات مستندة إلى الخريطة كثيرًا. يمكن تفعيل ميزة التنقّل بدون خريطة من خلال تحديد وجهة وبدء الإرشاد في حزمة تطوير البرامج (SDK) الخاصة بالتنقّل بدون عرض خريطة.
أضِف سطرًا برمجيًا لإخفاء GMSMapView:
mapView.isHidden = true
ستواصل حزمة تطوير البرامج (SDK) للتنقّل تعديل المواقع الجغرافية التي تم تثبيتها على الطريق والوقت المقدَّر للوصول والمسافة المتبقية من الرحلة، وسيظل بإمكان تطبيقك الاشتراك في جميع الأحداث التي تطلقها حزمة تطوير البرامج (SDK) أثناء تقدُّم السائق. هذا ليس مناسبًا لكل حالة استخدام وليس نصيحة جيدة في الحالات التي يحتاج فيها السائق إلى رؤية الخريطة واتباع الإرشادات المرئية. توضّح لقطات الشاشة التالية مقارنة جنبًا إلى جنب لتبديل طرق عرض الخريطة أثناء التنقّل النشط.
|
|
استخدام نمط خريطة داكن
يمكنك تصميم الخريطة لاستخدام مظهر داكن لتقليل كمية الطاقة اللازمة لعرض الخريطة على الشاشة.
تعرض حزمة تطوير البرامج للتنقّل خرائطها باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS، والتي تحتوي على خيارات لتنسيق أيّ طرق عرض خرائط غير مخصّصة للتنقّل في تطبيقك. تتيح طريقة عرض التنقّل أيضًا فرض المظهر الداكن. قد لا يؤثر ذلك في كل جهاز بالطريقة نفسها بسبب الاختلافات في نوع الشاشة، ولكنه يسمح بتوفير الطاقة المحتمل في بعض الحالات. وقد توصّلت دراسة حديثة إلى أنّ مقدار الطاقة التي يوفّرها الوضع الداكن على بعض الشاشات يعتمد على مدى سطوع الشاشة في البداية. على سبيل المثال، يوفّر "الوضع الداكن" قدرًا أكبر من الطاقة على الشاشات التي تم ضبطها على السطوع الكامل مقارنةً بالشاشات التي تم ضبط سطوعها على %30 إلى %50 من الحد الأقصى. من المهم مراعاة ذلك عند استخدام الوضع الداكن في تطبيقاتك، لأنّ توفير الطاقة سيكون مرتبطًا بكيفية ضبط المستخدم النهائي لسطوع الشاشة.
لمزيد من المعلومات حول تعديل واجهة مستخدم التنقّل، يُرجى الاطّلاع على تعديل واجهة مستخدم التنقّل.
يتطلّب تصميم الخرائط باستخدام السحابة الإلكترونية رقم تعريف خريطة يمثّل إعدادات خريطة من جهة الخادم تم إنشاؤها في مشروعك على Google Console. لمزيد من المعلومات حول إنشاء معرّف خريطة، يُرجى الاطّلاع على مستندات المطوّرين حول معرّف الخريطة. لمزيد من التفاصيل حول تصميم نمط خريطة مستند إلى السحابة الإلكترونية ونشره، يُرجى الاطّلاع على مستندات المطوّرين حول إنشاء أنماط الخرائط المستندة إلى السحابة الإلكترونية وإدارتها.
تغيير معدّل تحديث الموقع الجغرافي عبر نظام GPS
عند النظر في استخدام الطاقة من تحديثات الموقع المرسلة من الجهاز، ركز أكثر على تكرار تحديثات الموقع بدلاً من كمية البيانات المرسلة في الإرسال.
لا يمكنك التحكّم في ذلك مباشرةً في Navigation SDK . تنطبق النصيحة نفسها على استخدام مصادر بيانات الموقع الجغرافي غير المستندة إلى نظام تحديد المواقع العالمي (GPS) (شبكة الجوّال وشبكة Wi-Fi).
تعريف المستخدمين بالمنتج
قد يرغب مستخدمو تطبيقك في معرفة كيفية تحسين استهلاك الطاقة. لمساعدتهم في تقليل استهلاك الطاقة في تطبيقاتهم، انصح المستخدمين بما يلي:
- قفل الهاتف
- وضع تطبيق التنقّل في الخلفية
- استخدام ميزة التنقّل بدون خريطة إن أمكن
- تقليل سطوع الشاشة، إما باستخدام الوضع الداكن لشاشات OLED وAMOLED أو بتفعيل ميزة "السطوع التكيُّفي"
- الحفاظ على برودة الجهاز
- الاتصال بشبكة Wi-Fi داخل السيارة في حال توفّرها
قياس استهلاك الطاقة
يمكنك استخدام أدوات احترافية لقياس استهلاك الطاقة، ولكن غالبًا ما يكون الحصول عليها صعبًا أو مكلفًا. تقيس التطبيقات وأدوات تحليل بيئة التطوير المتكاملة (IDE)، مثل Power Profiler في استوديو Android ولوحة استخدام البطارية في XCode Organizer، استهلاك الطاقة، ولكن قد يكون من الصعب إزالة تأثير العمليات في الخلفية أو وضع مرجع أداء أساسي للمقارنة به. في بعض الحالات، قد تمنع قيود الجهاز الوصول إلى البيانات اللازمة.
يمكنك استخدام أجهزة مراقبة الطاقة ذات الأغراض الخاصة وتعديل إعدادات توصيل البطارية، وتتوفر منتجات وخدمات تجارية لمساعدتك في إجراء ذلك. يُرجى العِلم أنّ تعديل الأجهزة بهذه الطريقة قد يؤدي إلى إبطال ضمان الجهاز.