你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 電池電量與低電量模式

電池電量與低電量模式

編輯:IOS開發基礎

優步最近公布的數據顯示,當電池快沒電的時候,人們更願意接受溢價。同時,優步也表明他們並沒有利用電量相關的數據來設置溢價規則。換句話說,我們在開發App的時候,可以通過電池電量來"提升用戶體驗"。

電池狀態與電量

UIDevice 中有三個電池相關的屬性:

@property(nonatomic,getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // default is NO
@property(nonatomic,readonly) UIDeviceBatteryState          batteryState NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // UIDeviceBatteryStateUnknown if monitoring disabled
@property(nonatomic,readonly) float                         batteryLevel NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;  // 0 .. 1.0. -1.0 if UIDeviceBatteryStateUnknown

我們可以通過 batteryState 來獲取電池狀態,通過 batteryLevel來獲取電池電量信息。

值得一提的是,在獲取電池信息之前,需要手動設置 batteryMonitoringEnabled 為 YES,不然batterystate 會返回 Unkonw.

如果想要訂閱電池狀態,可以注冊為以下兩個通知的觀察者:

UIKIT_EXTERN NSString *const UIDeviceBatteryStateDidChangeNotification;  
UIKIT_EXTERN NSString *const UIDeviceBatteryLevelDidChangeNotification;

batteryLevel 的值每改變 0.05(也就是電池電量的 5%), 就會觸發一次 UIDeviceBatteryLevelDidChangeNotification。

低電量模式

為了解決續航問題,Apple 在 iOS 9 中為 iPhone 添加了低電量模式 。在此模式下,系統會通過禁用一些特性諸如電子郵件自動獲取、後台刷新、Hey Siri等,來達到降低能耗的目的。

低電量模式的設置藏得比較深,以至於從設置中找到它對大多數人來說是一件非常困難的事。換句話說,用戶打開了低電量模式,才能真正說明用戶所處的情景需要盡可能地節約電量。因此,相比較於直接獲取電池電量來說,探測低電量模式是否開啟,更能直觀地反應產品情景和用戶心理。

檢測低電量模式

在 iOS 9 中,我們可以很容易地檢測到用戶是否開啟了低電量模式,NSProcessInfo 提供了相對於的屬性。

if ([[NSProcessInfo processInfo] isLowPowerModeEnabled])  
{
  // 做低電量模式下該做的事
}

同時,如果想要對低電量模式的變化做出響應,可以注冊為以下通知的觀察者:

NSString * const NSProcessInfoPowerStateDidChangeNotification;

當我們檢測低電量模式的時候,需要注意以下兩點:

低電量模式僅支持 iOS 9 。當 App 需要兼容更早的版本時,先檢查api的可用性。

低電量模式僅適用於 iPhone ,在 iPad 中,isLowPowerModeEnabled 的返回值始終為 NO

當我們檢測到用戶開啟了低電量模式,可以為用戶做一些小改變,來幫助用戶延長電池續航。以下是 Apple 給出一些建議:

  • 停止使用定位服務

  • 減弱動畫效果

  • 停止後台任務(比如網絡請求)

  • 禁用運動追蹤

參考資料

  • Energy Efficiency Guide for iOS Apps

  • WWDC 2015 Session 707 Achieving All-day Battery Life

  • Detecting low power mode


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved