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

Я пытался воспроизвести эту функцию в следующем приложении: Сигнал зарядки

Мой вопрос: как они могут получить доступ к уровню заряда батареи устройства, когда экран заблокирован, а приложение находится в фоновом режиме?

Они отправляют уведомление, когда приложение находится в фоновом состоянии. И они отправляют это уведомление, когда устройство достигает определенного уровня заряда батареи.

ПРИМЕЧАНИЕ. Это невозможно сделать, если приложение переведено в фоновый режим нажатием кнопки "Домой". Но если пользователь блокирует экран, когда приложение активно, эта функция работает очень хорошо.


person N4SK    schedule 30.08.2018    source источник


Ответы (2)


Я не уверен, что вы можете получить эту информацию на экране блокировки:

Позвольте мне рассказать вам весь процесс Как добиться той же функциональности, что и в приложении Charge Alarm Это действительно просто: Следуйте этому: ????????

Шаг 1.
Вам необходимо включить Background Fetch в параметрах вашего проекта,

Шаг 2:

Включите мониторинг батареи: UIDevice.current.isBatteryMonitoringEnabled = true в вашем AppDelegate.

Шаг 3:

Получить уровень заряда батареи:

var batteryLevel : Float {
    get {
          return UIDevice.current.batteryLevel 
        } 
    }
}

Шаг 4. Добавьте Observer в viewDidLoad() вашего BaseViewController или любого другого ViewController:

    override func viewDidLoad(_ animated: Bool) {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange(_:)), name: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: nil)
      }
     func batteryLevelDidChange(_ notify:Notification){
          // write code to post a local notification on lock screen with text like :  " YOUR DEVICE IS NOW AT xx% "
      }

Теперь о настройке фоновых режимов: см. это

Шаг 5:

Для настройки локальных уведомлений: см. это

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

person Yash Bedi    schedule 30.08.2018
comment
Я уже пробовал ваше решение, но, похоже, оно у меня не работает... хотя я прошел по этой ссылке: oleb.net/blog/2014/02/alarm-clock-apps-ios и все работает. - person N4SK; 30.08.2018

Я прошел это это руководство

и это, кажется, работает отлично. Я сделал только одно изменение, то есть в файле info.plist я добавил новое свойство Application does not run in background и присвоил ему значение YES.

person N4SK    schedule 30.08.2018