אופטימיזציה של צריכת החשמל לאפליקציה

במאמר הזה נסביר איך לבצע אופטימיזציה של צריכת החשמל באפליקציית ניווט לנייד שאתם יוצרים באמצעות Navigation SDK. במקביל, אנחנו מתארים את הפשרות שצריך לקחת בחשבון כשמשתמשים בשיטות האלה. באופן ספציפי, המסמך הזה עוסק בנושאים הבאים:

  • מקורות של צריכת חשמל גבוהה, מדורגים מהגבוה לנמוך.
  • אסטרטגיות לאופטימיזציה של צריכת החשמל, לפי סדר החשיבות, החל מקצב הפריימים.
  • שיטות למשתמשי קצה להדרכת משתמשי האפליקציה לגבי ניהול השימוש במכשיר בזמן הנהיגה.

למה כדאי לבצע אופטימיזציה של אפליקציית הניווט?

בהתאם למצב, משתמשים באפליקציה שלכם עשויים להפעיל הנחיות ניווט למשך תקופות ארוכות. לדוגמה, נהגים ושליחים יכולים לעבוד שעות ארוכות ולבצע משימות באזורים לא מוכרים. במקרים כאלה, הם מסתמכים מאוד על הנחיות מפורטות באפליקציה. כתוצאה מכך, יכולות להיות בעיות אופייניות:

  • הסוללה מתרוקנת מהר מדי ואין מטענים זמינים. שימוש רב בניווט עלול לגרום לסוללות של המכשירים להתרוקן מהר יותר מהצפוי. משתמשים רבים יכולים לפתור את הבעיה הזו על ידי טעינת המכשיר ברכב, אבל נהגים של כלי רכב דו-גלגליים לא יכולים לעשות את זה.
  • הגבלת מהירות העיבוד של המכשיר בגלל חום. גם משתמשים שמטעינים את המכשיר באופן רציף עלולים להיתקל בבעיות. צריכת חשמל גבוהה לאורך זמן עלולה לגרום להתחממות המכשיר, וכתוצאה מכך להגבלת מהירות העיבוד (thermal throttling) ולאובדן ביצועים.

אפליקציות לניווט מפה לאתר מסתמכות על תכונות שצורכות הרבה חשמל, כמו מסך, GPS ותקשורת רדיו עם אנטנות סלולריות. לכן מומלץ לבצע אופטימיזציה של צריכת החשמל באפליקציה לנייד. בנוסף, כדאי לקחת בחשבון את צריכת החשמל של קהל היעד כדי להגיע לאיזון הנכון בין ביצועים לבין אופטימיזציה של צריכת החשמל.

מה צורך הכי הרבה חשמל?

בקטע הזה הפעילויות באפליקציה שקשורות לצריכת חשמל גבוהה מחולקות לשתי קטגוריות:

  • עיבוד המסך
  • עדכוני מיקום

עיבוד המסך

רינדור המסך גורם בדרך כלל לצריכת החשמל הגבוהה ביותר באפליקציות לניווט בנייד. בכל פעם שהמכשיר מצייר מפה ורכיבים אחרים של ממשק המשתמש על המסך, הוא מסתמך על עיבוד של ה-GPU וה-CPU. באופן דומה, אם המשתמש משאיר את המסך הזה פתוח למשך זמן ארוך, גם זה גורם לצריכת חשמל גבוהה יותר.

במידה מסוימת, אפשר לצפות לצריכת חשמל גבוהה אצל נהגים או נוסעים שמסתמכים על מפה גלויה כדי להתמצא, במיוחד אם הם משתמשים באפליקציה ברציפות במשך שעות רבות. בתרחיש הזה, האפליקציה גם מבצעת רינדור בקצב גבוה יותר במסך, כי המפה מתעדכנת בזמן אמת. במקרים מסוימים, המסך יכול להיטען מחדש כמעט באופן רציף, במיוחד כשהמשתמש נוסע ממיקום למיקום בלי לעצור.

עדכוני מיקום

בנוסף לרינדור המסך, יש עוד שתי פעילויות ניווט שצורכות חשמל מהמכשיר:

  • שימוש ב-GPS ובאנטנת רדיו סלולרית
  • עדכונים ושיתוף של מיקום, למשל כדי לספק זמן הגעה משוער או לדווח על מיקומי כלי רכב בצי.

התקשורת של GPS ושל רדיו סלולרי מסתמכת על פעולות הפעלה שצורכות הרבה חשמל: מערכת ה-GPS צריכה למצוא לוויינים, ומערכות הרדיו הסלולריות צריכות לנהל משא ומתן עם מגדלים וליצור חיבור. לכן, הן פועלות ברציפות במהלך הניווט, גם אם מכשירי הרדיו הסלולריים נשארים פעילים למשך 20-30 שניות בניסיון למזער את עלויות ההפעלה. מערכת ההפעלה שולטת בהגדרות האלה, ולא ניתן להגדיר אותן בקלות באפליקציה.

במקרה של עדכוני מיקום, צריכת החשמל משתנה בהתאם לגורמים בלתי צפויים. לדוגמה, המרחק בין המכשיר לבין תחנת הבסיס הסלולרית קובע את צריכת החשמל, כי המכשיר ישתמש בסיגנל המינימלי שנדרש כדי להמשיך בניווט, כדי להימנע ממעבר בין אנטנות. לכן, מכשיר שמנווט באזור עם קישוריות חלשה יצרוך יותר חשמל ממכשיר שנמצא קרוב לתחנת בסיס. בנוסף, יכול להיות שאפליקציות מסוימות ישתפו עדכוני מיקום עם שירות מרכזי לניהול צי רכב, ולכן הן יצטרכו לתקשר עם שרת כדי לעשות זאת.

אופטימיזציה של צריכת החשמל של האפליקציה

הבעיה באופטימיזציה של צריכת החשמל באפליקציות ניווט היא שהאפליקציות האלה מסתמכות במידה רבה על משאבים שצורכים הרבה חשמל, מה שמגביל את האפשרויות לצמצום ההשפעה בלי להתפשר על דברים כמו הגבלת השימוש במסך. בקטע הזה מפורטות גישות שונות שאפשר לנקוט כדי לבצע אופטימיזציה לאפליקציה, מהגישה עם ההשפעה הגדולה ביותר ועד לגישה עם ההשפעה הקטנה ביותר.

שינוי קצב הפריימים

המסך מרענן את מה שמוצג בו בתדירות שנקראת קצב פריימים. קצב הפריימים נמדד בדרך כלל בפריימים לשנייה (FPS). רינדור המסך צורך הרבה CPU או GPU, ולכן אפשר להפחית את קצב הפריימים כדי לחסוך בצריכת החשמל.

הפשרה שצריך לעשות כשמפחיתים את קצב הפריימים היא שהרינדור של המסך עשוי להיראות פחות חלק, במיוחד אם המפה מתעדכנת לעיתים קרובות. הבעיה הזו בולטת במיוחד כשמבצעים זום אין במפה, כשהמשתמש נוסע במהירות גבוהה או כשמשנים את המהירות או הכיוון במידה רבה.

במכשירי iOS, חבילת Maps SDK ל-iOS חושפת את המאפיין preferredFrameRate כדי לשלוט בקצב הפריימים. בטבלה הבאה מפורטים GMSFrameRate ערכי המונה שאפשר לשנות:

kGMSFrameRatePowerSave

כדי לחסוך בסוללה, משתמשים בקצב הפריימים המינימלי.

kGMSFrameRateConservative

כדאי להשתמש בקצב פריימים חציוני כדי לספק רינדור חלק יותר ולחסוך במחזורי עיבוד.

kGMSFrameRateMaximum

שימוש בקצב הפריימים המקסימלי למכשיר.

במכשירים ברמה נמוכה, קצב הפריימים הוא 30 FPS. במכשירים ברמה גבוהה, קצב הפריימים הוא 60 FPS.

לעיון, אפשר לקרוא את המאמר בנושא GMSFrameRate בתיעוד של Google Navigation SDK ל-iOS.

אתם לא יכולים לשלוט בבהירות המסך של המכשיר של משתמש הקצה או במשך הזמן שהמסך נשאר דולק, אבל אתם יכולים לספק אפשרות להנחיות ניווט ללא מפה. כך משתמש הקצה יוכל לבחור באפשרות הזו כדי לחסוך בחשמל. לדוגמה, אם נהגים עובדים באופן קבוע באותה שכונה, יכול להיות שהם לא יזדקקו להנחיות מבוססות-מפה בתדירות גבוהה. אפשר להפעיל ניווט ללא מפה על ידי הגדרת יעד והתחלת ההנחיות ב-Navigation SDK, אבל לא להציג מפה.

מוסיפים שורת קוד כדי להסתיר את GMSMapView:

mapView.isHidden = true

ה-SDK של הניווט ימשיך לעדכן את המיקומים שמוצמדים לכביש, את זמן ההגעה המשוער ואת המרחק שנותר עד לסיום המסלול, והאפליקציה שלכם עדיין יכולה להירשם לכל האירועים שמופעלים על ידי ה-SDK כשהנהג ממשיך בנסיעה. השיטה הזו לא מתאימה לכל תרחיש שימוש, וכמובן שלא מומלץ להשתמש בה במקרים שבהם הנהג צריך לראות את המפה ולפעול לפי הנחיות ויזואליות. צילומי המסך הבאים ממחישים השוואה זה לצד זה של החלפת תצוגות מפה במהלך ניווט פעיל.

אפליקציית הדגמה שפועלת עם תצוגת המפה.
איור 1. Navigation SDK אפליקציית הדגמה ל-iOS שמציגה את הדגמה של החזרת נתונים
אפליקציית הדגמה פועלת בלי שתצוגת המפה תהיה גלויה.
איור 2. אפליקציית הדגמה שפועלת בלי תצוגת מפה גלויה. שימו לב שהזמן והמרחק שנותרו, וגם המיקום שמוצמד לכביש, עדיין מתעדכנים.

שימוש בסגנון מפה כהה

כדאי לעצב את המפה כך שיוצג בה עיצוב כהה כדי לצמצם את כמות האנרגיה שנדרשת לרינדור המפה במסך.

‫Navigation SDK מעבד את המפות שלו באמצעות Google Maps SDK ל-iOS, שכולל אפשרויות לעיצוב כל תצוגות המפה שאינן ניווט באפליקציה. תצוגת הניווט תומכת גם בהפעלת מצב כהה. יכול להיות שההגדרה הזו לא תשפיע על כל המכשירים באותה צורה בגלל הבדלים בסוג המסך, אבל היא מאפשרת לחסוך בחשמל במקרים מסוימים. מחקר שנערך לאחרונה מצא שכמות החשמל שנחסכת באמצעות המצב הכהה במסכים מסוימים תלויה בבהירות המסך בהתחלה. לדוגמה, מצב כהה חוסך יותר חשמל במסכים שמוגדרים לבהירות מלאה מאשר במסכים שהבהירות שלהם כבר מותאמת ל-30-50% מהמקסימום. חשוב לקחת את זה בחשבון כשמשתמשים במצב כהה באפליקציות, כי החיסכון באנרגיה יהיה יחסי לבהירות המסך שהמשתמש קובע.

מידע נוסף על שינוי ממשק המשתמש של הניווט

צילום מסך של Navigation SDK שפועל באייפון 15 פרו עם סגנון מפה כהה.
איור 3. Navigation SDK מוגדר עם עיצוב מפה כהה
מגדירים את GMSMapView עם mapID שמייצג עיצוב מפה מבוסס-ענן שהוגדר בפרויקט.

עיצוב מפות מבוסס-ענן דורש מזהה מפה שמייצג הגדרת מפה בצד השרת שנוצרה בפרויקט שלכם ב-Google Console. מידע נוסף על יצירת מזהה מפה זמין במסמכי התיעוד למפתחים בנושא מזהה מפה. פרטים נוספים על עיצוב ופריסה של סגנון מפה מבוסס-ענן זמינים במאמרי העזרה למפתחים בנושא יצירה וניהול של סגנונות מפה מבוססי-ענן.

שינוי תדירות העדכון של מיקום GPS

כשבודקים את צריכת החשמל בעקבות עדכוני מיקום שנשלחים מהמכשיר, חשוב להתמקד בתדירות של עדכוני המיקום ולא בכמות הנתונים שנשלחים בשידור.

אי אפשר לשלוט בזה ישירות ב-Navigation SDK . אותו הדבר נכון גם לגבי שימוש במקורות מיקום שאינם GPS (רשת סלולרית ו-Wi-Fi).

שליחת עדכונים שוטפים למשתמשים

יכול להיות שהמשתמשים באפליקציה שלכם ירצו לדעת איך לבצע אופטימיזציה של צריכת החשמל. כדי לעזור למשתמשים לצמצם את צריכת החשמל באפליקציות שלהם, מומלץ להנחות אותם לבצע את הפעולות הבאות:

  • נעילת הטלפון
  • העברת אפליקציית הניווט לרקע
  • שימוש בניווט בלי מפה, אם אפשר
  • הפחתת בהירות המסך, באמצעות שימוש במצב כהה במסכי OLED ו-AMOLED, או באמצעות הפעלת בהירות דינמית
  • שמירה על טמפרטורה קרירה של המכשיר
  • התחברות ל-Wi-Fi ברכב, אם יש רשת זמינה

מדידת צריכת החשמל

אפשר להשתמש בכלים מקצועיים כדי למדוד את צריכת החשמל, אבל לעיתים קשה או יקר להשיג אותם. אפליקציות וכלי פרופיל של סביבות פיתוח משולבות (IDE), כמו Power Profiler ב-Android Studio ו-Battery Usage pane ב-XCode Organizer, מודדים את צריכת החשמל, אבל יכול להיות שיהיה קשה להסיר את ההשפעה של תהליכים ברקע או להגדיר בסיס ביצועים למדידה. במקרים מסוימים, הגבלות על המכשיר עשויות למנוע גישה לנתונים הנדרשים.

אפשר להשתמש בחומרה מיוחדת למעקב אחר צריכת החשמל ולשנות את הגדרות החיבור של הסוללה. יש מוצרים ושירותים מסחריים שיכולים לעזור לכם לעשות את זה. חשוב לדעת: שינוי מכשירים באופן הזה עלול לבטל את האחריות על המכשיר.