iOS電池電量與低電量模式

DexterTme 8年前發布 | 20K 次閱讀 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 給出一些建議:

  • 停止使用定位服務
  • 減弱動畫效果
  • 停止后臺任務(比如網絡請求)
  • 禁用運動追蹤

參考資料

 

來自: http://shengpan.net/battery/

 

 本文由用戶 DexterTme 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!