Как отключить/включить режим сна в программном обеспечении iOS?

У меня есть приложение, которое должно бодрствовать до конца обратного отсчета, но оно переходит в "спящий режим", когда оно достигает выделенного времени для сна.

В моем приложении у меня есть возможность отложить спящий режим, поэтому пользователи могут отключить/включить его.

Как это сделать программно?

Ответ 1

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

В Objective-C:

[UIApplication sharedApplication].idleTimerDisabled = YES;

В Swift:

UIApplication.sharedApplication().idleTimerDisabled = true

В Swift 3.0 & Swift 4.0:

UIApplication.shared.isIdleTimerDisabled = true

Установите его на NO или false, чтобы снова включить спящий режим.

Например, если вам это нужно до тех пор, пока вы не покинете вид, вы можете вернуть его обратно, переопределив viewWillDisappear:

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

Подробнее о классе UIApplication.

Ответ 2

В Swift 3, чтобы отключить таймер простоя, он теперь:

UIApplication.shared.isIdleTimerDisabled = true

Чтобы снова включить таймер простоя, просто:

UIApplication.shared.isIdleTimerDisabled = false

Кроме того, обратите внимание, что YES и NO недоступны в Swift и что вы должны использовать либо true, либо false (в отличие от предыдущего ответа).

Ответ 3

в точном месте Swift 3, где это можно сделать, это AppDelegate.swift - вы должны добавить UIApplication.shared.isIdleTimerDisabled = true внутри application func, поэтому результат будет выглядеть так:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.isIdleTimerDisabled = true
    return true
}