Как программно отключить / включить спящий режим в iOS?
У меня есть приложение, которое должно бодрствовать до конца обратного отсчета, но оно переходит в "спящий режим" всякий раз, когда достигает установленного времени для сна.
В моем приложении у меня есть возможность отложить сон, чтобы пользователи могли отключить / включить его.
Как мне сделать это программно?
3 ответа
Вы можете отключить таймер простоя следующим образом;
В Objective-C:
[UIApplication sharedApplication].idleTimerDisabled = YES;
В Свифте:
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 Class.
В Swift 3 отключить таймер простоя теперь:
UIApplication.shared.isIdleTimerDisabled = true
Чтобы снова включить таймер простоя, просто:
UIApplication.shared.isIdleTimerDisabled = false
Кроме того, обратите внимание, что YES
а также NO
недоступны в Swift и что вы должны использовать либо true
или же false
(в отличие от предыдущего ответа).
iOS 13, Swift 5,5.1+ для отключения таймера простоя. ВSceneDelegate.swift
.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIApplication.shared.isIdleTimerDisabled = true
}
В Swift 3 точное место, где это можно сделать, это AppDelegate.swift
- вы должны добавить UIApplication.shared.isIdleTimerDisabled = true
внутри application
Так что результат будет выглядеть так:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.isIdleTimerDisabled = true
return true
}