如何在 iOS 中获取电池电量和状态(插入电源、放电、充电等)?

iosapps/applicationsmobile development更新于 2026/1/7 15:52:17

在本文中,我们将了解如何在 iOS 中获取电池状态。

那么,让我们开始吧。

步骤 1 − 打开 Xcode → 新建项目 → 单视图应用程序 → 我们将其命名为"BatteryState"

步骤 2 − 打开 Main.storyboard 并添加两个标签,如下所示。我们将在此标签上显示电池状态。

步骤 3 − 使用以下代码启用电池状态监控。您可以将此代码放在 ViewController 的 viewDidLoad 中。

UIDevice.current.isBatteryMonitoringEnabled = true

步骤 4 − 声明一个变量来保存电池状态。我们将此变量命名为 batteryState。我们从这个变量返回 UIDevice.current.batteryState,它将返回当前电池状态。

var batteryState: UIDevice.BatteryState {
   return UIDevice.current.batteryState
}

步骤 5 − 您需要添加电池状态变化通知的观察器。每当电池状态发生变化时,iOS 都会发送此通知。您可以在 viewDidLoad 中添加观察器,如下所示

NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)

我们已经添加了观察器,每当电池电量发生变化时,batteryLevelDidChange 函数都会被调用。

步骤 6 − 在 batteryLevelDidChange 方法中处理电池电量变化。方法定义如下

@objc func batteryLevelDidChange() {
   updateBatteryStateLabel()
}
func updateBatteryStateLabel() {
   var status = "Unknown"
   switch batteryState {
      case .charging:
      status = "Charging"
      case .unknown:
      status = "Unknown"
      case .unplugged:
      status = "Unplugged"
      case .full:
      status = "Full"
   }
   DispatchQueue.main.async {
      self.batteryStateLabel.text = "Battery State: \(status)"
   }
}

这里我们定义了 updateBatteryStateLabel 函数来更新标签。该函数由我们的观察函数 batteryLevelDidChange 调用。updateBatteryStateLabel 函数也应该由 viewDidLoad 调用,以显示初始电池状态。完成所有这些操作后,viewDidLoad 如下所示

override func viewDidLoad() {
   super.viewDidLoad()
   UIDevice.current.isBatteryMonitoringEnabled = true
   NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
   updateBatteryStateLabel()
}

在设备上运行代码,根据电池状态,您将看到如下图所示的不同状态。


相关文章