【发布时间】:2020-08-16 03:36:07
【问题描述】:
我有一个应用程序必须保持清醒直到倒计时结束,但它会在达到分配的睡眠时间时进入“睡眠模式”。
在我的应用中,我可以选择推迟睡眠,因此用户可以禁用/启用它。
如何以编程方式进行?
【问题讨论】:
标签: ios
我有一个应用程序必须保持清醒直到倒计时结束,但它会在达到分配的睡眠时间时进入“睡眠模式”。
在我的应用中,我可以选择推迟睡眠,因此用户可以禁用/启用它。
如何以编程方式进行?
【问题讨论】:
标签: ios
您可以按如下方式禁用空闲计时器;
在 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。
【讨论】:
[UIApplication sharedApplication] 仅指您的应用的 UIApplication 对象。
在 Swift 3 中,现在禁用空闲计时器:
UIApplication.shared.isIdleTimerDisabled = true
要重新打开空闲计时器很简单:
UIApplication.shared.isIdleTimerDisabled = false
另外,请注意 YES 和 NO 在 Swift 中不可用,您必须使用 true 或 false(与上一个答案相反)。
【讨论】:
在 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+ 禁用空闲计时器。在SceneDelegate.swift.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIApplication.shared.isIdleTimerDisabled = true
}
【讨论】: