Восстановление уровня заряда батареи работает только в первый раз, когда я делаю это

Когда мое приложение запускается впервые, уровень заряда батареи корректно определяется float batteryLevel = [UIDevice currentDevice].batteryLevel, Однако, когда я пытаюсь получить его позже в своем коде, я всегда получаю одно и то же значение, даже если уровень заряда батареи изменился.

Последующие звонки [UIDevice currentDevice].batteryLevel всегда возвращайте тот же результат, что и первый, например: если уровень заряда батареи составлял 30% при запуске моего приложения, то через 10 минут, когда я пытаюсь восстановить его, я тоже получаю 30%, но на самом деле уровень заряда батареи на данный момент 40%.

У кого-нибудь есть идеи, почему это может произойти?

1 ответ

Для мониторинга изменения уровня заряда батареи Вы можете использовать уведомление о состоянии батареи UIDeviceBatteryStateDidChangeNotification а также UIDeviceBatteryLevelDidChangeNotification

Вы можете зарегистрировать свой VC для получения уведомления об изменении следующим образом:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryStateDidChange:", name: UIDeviceBatteryStateDidChangeNotification, object: nil)
 NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryLevelDidChange:", name: UIDeviceBatteryLevelDidChangeNotification, object: nil)   

А затем реализовать методы селектора

func batteryStateDidChange(notification: NSNotification){     
    // The stage did change: plugged, unplugged, full charge...
}

func batteryLevelDidChange(notification: NSNotification){     
   // The battery's level did change (98%, 99%, ...)
}
Другие вопросы по тегам