Экран становится темным, если для UIApplication.shared.isIdleTimerDisabled установлено значение false

Я хочу, чтобы экран всегда светился при воспроизведении звука и выключался после завершения звука, и я не нажимал на экран через две минуты (я установил автоматическую блокировку в настройках), реализуйте код следующим образом.

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIApplication.shared.isIdleTimerDisabled = true
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        UIApplication.shared.isIdleTimerDisabled = false
    }

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

Как это исправить, или это баг ios?

Спасибо


person Leo    schedule 26.12.2016    source источник


Ответы (1)


Похоже, нет никакой возможности сбросить таймер простоя, поэтому ваше устройство выключается сразу после установки свойства isIdleTimerDisabled.

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

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    DispatchQueue.main.asyncAfter(deadline: .now() + interval, execute: {
        UIApplication.shared.isIdleTimerDisabled = false
    })
}

К сожалению, по-прежнему нет способа проверить текущее idleTimer время для динамического расчета interval значения.

person Daniyar    schedule 26.12.2016