0

I have been trying several methods but none have worked.

I've been trying to use some of the codes to get battery level in Xcode5 but none have worked. I required the reading to change every time the level of the battery updates.

  class ViewController: UIViewController {

    @IBOutlet weak var level_Battery: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        UIDevice.current.isBatteryMonitoringEnabled = true
        let level = UIDevice.current.batteryLevel
        let battery_Level = Int(level * 100)
        level_Battery.text = "\(battery_Level)%"

    }
}

I expect that the text variable always shows an updated battery level reading. so whatever the phone battery level charge is I would like to show that inside of the app.

rmaddy
  • 314,917
  • 42
  • 532
  • 579

2 Answers2

0

Create your battery level as a computed property to get battery level.

class ViewController: UIViewController {

    @IBOutlet weak var level_Battery: UILabel!
     var batteryLevel: Float {
         return UIDevice.current.batteryLevel
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        UIDevice.current.isBatteryMonitoringEnabled = true
        level_Battery.text = "\(batteryLevel * 100)%)"
    }
}

If you want to continuosly monitoring battery level, you need to add observer of battery state changing provided by iOS

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

@objc func batteryLevelDidChange(_ notification: Notification) {
    print(batteryLevel)
}
karthikeyan
  • 3,821
  • 3
  • 22
  • 45
0

Code:

class ViewController: UIViewController {

    @IBOutlet weak var level_Battery: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        level_Battery.text = "\(UIDevice.current.batteryLevel)"
        NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange(notification:)), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
    }

    @objc func batteryLevelDidChange(notification: NSNotification){
        level_Battery.text = "\(UIDevice.current.batteryLevel)"
    }
}

Note:

Maybe it will give unpredictable value with simulator, So I suggest test it on real device

Hitesh Surani
  • 12,733
  • 6
  • 54
  • 65