Наблюдайте, как батарея разряжена, Swift - PullRequest
1 голос
/ 24 мая 2019

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

Будет ли вызываться func applicationWillTerminate(_ application: UIApplication) {?Если нет, то существует ли другой способ отследить это?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Это не поддерживается, вместо этого вы должны решить, когда уровень заряда батареи настолько низкий, что вам нужно запустить свой код.

Что вы можете сделать, это прослушать уведомление batteryLevelDidChangeNotification, которое выполняется путем активации мониторинга, см. isBatteryMonitoringEnabled

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

Понятия не имею, что это может быть, исходя из личного опыта, я видел свои телефоныостаться в живых в течение длительного времени на значениях ниже 5%, но также видел, как они умирают вскоре после падения ниже 10%

1 голос
/ 24 мая 2019

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

    func startObservingBatteryDrainage(){
        if UIDevice.current.isBatteryMonitoringEnabled && (UIDevice.current.batteryState == .unplugged || UIDevice.current.batteryState == .unknown){
            if UIDevice.current.batteryLevel < 0.1{
                NotificationCenter.default.addObserver(self, selector: #selector(funcWhenBatteryIsAlmostDrained), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
            }
        }
    }

    @objc func funcWhenBatteryIsAlmostDrained(){
        //do stuff

    }

...