最佳化應用程式的耗電量

本文說明如何運用 Navigation SDK 建構行動導航應用程式,並提供節省電力的最佳做法。同時說明採用這些做法時應考量的取捨。本文件特別涵蓋下列主題:

  • 耗電量高的來源,依耗電量由高到低排序。
  • 策略:依重要性排序,從影格速率開始,逐步說明如何最佳化耗電量。
  • 使用者策略:教導應用程式使用者如何在導航時管理裝置用量。

為什麼要最佳化導覽應用程式?

視情況而定,應用程式使用者可能會長時間執行導航指引。舉例來說,司機和送貨員可能需要長時間工作,在不熟悉的區域完成指派的工作。在這種情況下,他們會非常依賴應用程式內的逐步導航指引。這會導致一些常見問題:

  • 電池耗電量和充電器供應情形。大量使用導航功能可能會導致裝置電池耗電速度超出預期。許多使用者可以在車上為裝置充電,但機車騎士無法這麼做。
  • 裝置因過熱而降低效能。即使使用者持續為裝置充電,也可能會遇到問題。長時間耗用大量電力可能會導致裝置過熱,進而造成熱節流,導致效能下降。

導航應用程式會使用耗電量大的功能,例如螢幕、GPS 和與基地台的無線電通訊,因此建議您盡量減少行動應用程式的耗電量。此外,您也應考量目標對象的耗電量需求,以便在效能和耗電量之間做出適當取捨。

哪些項目最耗電?

本節會將與高耗電量相關的應用程式內活動分為兩類:

  • 畫面顯示
  • 最新位置

畫面顯示

在行動導航應用程式中,螢幕算繪通常會導致耗電量最高。裝置每次在螢幕上繪製地圖和其他 UI 元素時,都會用到 GPU 和 CPU 處理作業。同樣地,如果使用者長時間讓該畫面保持開啟,也會消耗更多電量。

如果司機或乘客需要依賴地圖導航,且連續使用應用程式數小時,耗電量可能會較高。在這種情況下,應用程式也會在畫面上以較高的速率進行算繪,因為地圖會即時更新。在某些情況下,螢幕可能會幾乎持續重新繪製,特別是使用者在不同地點間移動時,沒有停下來。

最新位置

除了畫面算繪之外,其他兩項導覽活動也會消耗裝置電力:

  • 無線電基地台和 GPS 用量
  • 位置資訊更新和分享,例如提供預計到達時間,或回報車隊中車輛的位置。

GPS 和行動無線電通訊都仰賴耗電的啟動作業:GPS 必須尋找衛星,行動無線電則必須與基地台協商並建立連線。因此,即使為了盡量降低啟動費用,行動無線電仍會維持 20 到 30 秒的啟用狀態,但這些服務在導航期間基本上會持續運作。作業系統會控管這些設定,您無法在應用程式中輕鬆設定。

至於位置資訊更新,耗電量會因無法預測的因素而異。舉例來說,裝置與行動網路基地台之間的距離會決定耗電量,因為裝置會使用繼續導航所需的最低訊號,避免切換基地台。因此,在連線品質不佳的區域導航時,裝置會比靠近基地台時消耗更多電力。此外,部分應用程式可能會與中央車隊管理服務分享位置資訊更新,因此需要與伺服器通訊才能完成這項作業。

最佳化應用程式耗電量

導航應用程式的耗電量最佳化挑戰在於,這類應用程式高度依賴耗電資源,因此在不限制螢幕使用等情況下,您可採取的影響減緩措施有限。本節列出可採取的應用程式最佳化方法,並依影響程度排序。

變更影格速率

螢幕會以影格速率更新顯示內容。畫面更新率通常以每秒影格數 (FPS) 為單位。由於螢幕算繪會使用大量 CPU 或 GPU,因此您可以降低影格速率來節省耗電量。

降低影格速率的缺點是螢幕算繪可能不夠平滑,尤其是在地圖頻繁更新時。當使用者放大地圖、高速行駛,或是大幅改變速度或方向時,這種情況可能最為明顯。

在 iOS 裝置上,Maps SDK for iOS 會公開 preferredFrameRate 屬性,用於控制影格速率。下表列出可調整的 GMSFrameRate 列舉值:

kGMSFrameRatePowerSave

使用最低影格速率,節省電池用量。

kGMSFrameRateConservative

使用中位數影格速率可提供更流暢的算繪效果,並節省處理週期。

kGMSFrameRateMaximum

使用裝置的最高影格速率。

低階裝置為 30 FPS,高階裝置則為 60 FPS。

如需參考資料,請參閱 Google Navigation SDK for iOS 說明文件中的 GMSFrameRate

雖然您無法控制使用者如何設定裝置螢幕亮度或螢幕保持開啟的時間長度,但可以提供不含地圖的導航指引選項。這樣一來,使用者就能選擇該選項來節省電力。舉例來說,如果司機經常在同一社區工作,可能就不需要經常使用地圖導航。如要啟用無地圖導航功能,請在 Navigation SDK 中設定目的地開始導引,但不要顯示地圖。

新增一行程式碼,隱藏 GMSMapView

mapView.isHidden = true

Navigation SDK 會持續更新道路上對應的位置、預計抵達時間和剩餘旅程距離,而應用程式仍可訂閱 SDK 產生的所有事件,這不適合所有應用情境,當然,如果駕駛人需要查看地圖並依循視覺導引,這就不是好建議。以下螢幕截圖並排比較了導航期間切換地圖檢視畫面。

執行試用版應用程式,地圖檢視畫面會顯示在畫面上。
圖 1. Navigation SDK iOS 示範應用程式,顯示「資料回傳」示範
執行試用版應用程式,但未顯示地圖檢視畫面。
圖 2. 執行試用版應用程式,但未顯示地圖檢視區塊。請注意,剩餘時間和距離,以及道路對應位置仍會更新。

使用深色地圖樣式

建議將地圖樣式設為深色主題,減少在螢幕上算繪地圖所需的能源。

Navigation SDK 會使用 Google Maps SDK for iOS 算繪地圖,其中包含的選項可讓您為應用程式中任何非導航地圖檢視畫面設定樣式。導航檢視畫面也支援強制使用深色模式。由於螢幕類型不同,這項設定對每部裝置的影響可能不盡相同,但有時可節省電力。最近的研究發現,在某些螢幕上,深色模式的省電量取決於螢幕的初始亮度。舉例來說,如果螢幕亮度已調整為最大值的 30% 至 50%,深色模式的省電效果會比螢幕亮度設為最大值時更顯著。使用應用程式的深色模式時,請務必考慮這點,因為省電效果取決於使用者的螢幕亮度設定。

如要進一步瞭解如何修改 Navigation UI,請參閱「修改導覽 UI」。

螢幕截圖:在 iPhone 15 Pro 上執行 Navigation SDK,地圖樣式為深色。
圖 3.已設定深色地圖樣式的 Navigation SDK
使用代表專案中定義的雲端式地圖樣式的 mapID,設定 GMSMapView

如要使用雲端式地圖樣式設定,需要有地圖 ID,代表您在 Google 控制台專案中建立的伺服器端地圖設定。如要進一步瞭解如何建立地圖 ID,請參閱地圖 ID 開發人員文件。如要進一步瞭解如何設計及部署雲端式地圖樣式,請參閱建立及管理雲端式地圖樣式的開發人員說明文件。

變更 GPS 位置更新頻率

考量裝置傳送位置資訊更新時的耗電量時,請著重於位置資訊更新的頻率,而非傳輸的資料量。

您無法在 Navigation SDK 中直接控管這項設定。使用非 GPS 位置來源 (行動網路和 Wi-Fi) 時,也適用相同的建議。

讓使用者熟悉整套服務

應用程式使用者可能想瞭解如何節省電力。為協助使用者減少應用程式的耗電量,請建議他們採取下列做法:

  • 鎖定手機
  • 將導覽應用程式放到背景
  • 盡可能在沒有地圖的情況下使用導覽功能
  • 降低螢幕亮度,方法包括為 OLED 和 AMOLED 螢幕啟用深色模式,或是啟用自動調整亮度
  • 讓裝置保持涼爽
  • 連線至車內 Wi-Fi (如有)

測量耗電量

您可以使用專業級工具測量耗電量,但這類工具通常難以取得或價格高昂。 應用程式和 IDE 分析工具 (例如 Android Studio 中的 Power ProfilerXcode Organizer 中的「電池用量」窗格) 會測量耗電量,但很難移除背景程序的影響,或設定效能基準來進行測量。在某些情況下,裝置限制可能會導致無法存取必要資料。

您可以使用專用電源監控硬體,並修改電池連線設定,市面上也有商業產品和服務可協助您完成這項作業。請注意,以這種方式修改裝置可能會導致裝置保固失效。