如何在 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()
}
在设备上运行代码,根据电池状态,您将看到如下图所示的不同状态。


