如何在 iOS 中以编程方式禁用/启用睡眠模式?

我有一个应用程序,必须保持清醒,直到倒计时结束,但它会进入“睡眠模式”,每当它达到分配的时间睡觉。

在我的应用程序中,我可以选择推迟睡眠,这样用户就可以禁用/启用它。

我如何以编程方式做到这一点?

76238 次浏览

您可以按如下方式禁用空闲计时器;

目标 C:

[UIApplication sharedApplication].idleTimerDisabled = YES;

斯威夫特:

UIApplication.sharedApplication().idleTimerDisabled = true

在 Swift 3.0和 Swift 4.0中:

UIApplication.shared.isIdleTimerDisabled = true

将其设置回 NOfalse以重新启用睡眠模式。

例如,如果您在离开视图之前一直需要它,那么您可以通过重写 viewWillDisaper 来设置它:

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

更多有关 UIApplication 类的资料。

在 Swift 3中,要禁用空闲计时器,现在是:

UIApplication.shared.isIdleTimerDisabled = true

重新启动空闲计时器的方法很简单:

UIApplication.shared.isIdleTimerDisabled = false

此外,请注意,YESNO在 Swift 中不可用,您必须使用 truefalse(与以前的答案相反)。

在 Swift 3中,这个操作的确切位置是 AppDelegate.swift-你应该在 application的 func 中加入 UIApplication.shared.isIdleTimerDisabled = true,这样结果会是这样的:

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

IOS 13,Swift 5,5.1 + 禁用空闲计时器。

 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIApplication.shared.isIdleTimerDisabled = true
}