如何在 iOS 中以编程方式禁用/启用睡眠模式?
Posted
技术标签:
【中文标题】如何在 iOS 中以编程方式禁用/启用睡眠模式?【英文标题】:How to disable/enable the sleep mode programmatically in iOS? 【发布时间】:2012-09-30 11:46:11 【问题描述】:我有一个应用程序必须保持清醒直到倒计时结束,但它会在达到分配的睡眠时间时进入“睡眠模式”。
在我的应用中,我可以选择推迟睡眠,因此用户可以禁用/启用它。
如何以编程方式进行?
【问题讨论】:
【参考方案1】:您可以按如下方式禁用空闲计时器;
在 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。
【讨论】:
@Gati 我对此表示怀疑,但我无法确认,因为我没有手表 @jrturton 嗯.. 它不适用于 Apple Watch。如果您对此有任何解决方案,请告诉我。 感谢您提供此信息。它会派上用场的。我想知道在一个应用程序中禁用睡眠模式是否会影响整个设备。就像我在我的应用程序中禁用它然后退出应用程序一样,应用程序退出后它仍然会被禁用吗?我是否需要检查它是否处于活动状态,然后在退出时重新启用它? @ScottKilbourn 它只会影响您的应用。[UIApplication sharedApplication]
仅指您的应用的 UIApplication 对象。【参考方案2】:
在 Swift 3 中,现在禁用空闲计时器:
UIApplication.shared.isIdleTimerDisabled = true
要重新打开空闲计时器很简单:
UIApplication.shared.isIdleTimerDisabled = false
另外,请注意 YES
和 NO
在 Swift 中不可用,您必须使用 true
或 false
(与上一个答案相反)。
【讨论】:
【参考方案3】:iOS 13, Swift 5,5.1+ 禁用空闲计时器。在SceneDelegate.swift
.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
UIApplication.shared.isIdleTimerDisabled = true
【讨论】:
【参考方案4】:在 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
【讨论】:
这不依赖于 AppDelegate。事实上,我认为在没有任何真正原因的情况下保持设备唤醒是不好的做法。问题是关于在特定功能期间保持设备唤醒(直到倒计时结束)。因此,应考虑在倒计时开始时禁用空闲计时器,并在倒计时结束后再次启用它。 @Cyrus 我不是 swift 程序员。目前我正在制作 webview 应用程序,我尝试了很多没有确切说明的解决方案,但这对我不起作用,但这有效。所以我发布这个以与其他将寻找类似解决方案的人分享。使用这个的原因 - 我的应用程序是吉他助手,需要在演奏过程中始终保持清醒以上是关于如何在 iOS 中以编程方式禁用/启用睡眠模式?的主要内容,如果未能解决你的问题,请参考以下文章