Состояние зарядки устройства Swift - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь определить состояние батареи в моем проекте и установить для переменной значение true, если устройство заряжается.Проблема, с которой я сталкиваюсь сейчас, заключается в том, что переменная не изменяется независимо от того, заряжается она или нет.вот мой код.

 var chargingStatus: Bool? = false

 func declaration() {
        UIDevice.current.isBatteryMonitoringEnabled = true
        NotificationCenter.default.addObserver(self, selector: #selector(batteryStateDidChange), name: UIDevice.batteryStateDidChangeNotification, object: nil)

    }

@objc func batteryStateDidChange(_ notification: Notification) {

        print("BATTERY STATE \(batteryState)")
        switch batteryState {
        case .unplugged, .unknown:
            chargingStatus = false
        case .charging:
            chargingStatus = true
        case .full:
            chargingStatus = false
            print("charging or full")
        }
    }

1 Ответ

0 голосов
/ 09 февраля 2019

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

override func viewDidLoad() {
    super.viewDidLoad()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryStateDidChange:", name: UIDeviceBatteryStateDidChangeNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "batteryLevelDidChange:", name: UIDeviceBatteryLevelDidChangeNotification, object: nil)   

    // Stuff...
}

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

func batteryLevelDidChange(notification: NSNotification){     
   // The battery's level did change (98%, 99%, ...)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...