在我的应用程序运行时,如何防止iPhone屏幕变暗或关闭?


114

我正在开发不需要用户输入的应用程序,但是我不希望iPhone进入省电模式。

是否可以从应用程序禁用节能功能?


7
在最近所有问题上的否决票是什么?对我来说,这似乎是一个有效的问题。
Eric Sc​​hoonover,

Answers:


172

目标C

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

迅速

UIApplication.shared.isIdleTimerDisabled = true

2
使用此行代码有关系吗?它应该位于AppDelegate还是App的主ViewController中?

16
这取决于您打算如何使用它。您可能只有一个不想在应用程序中超时的视图。在这种情况下,您可以在该视图控制器中使用它(出现视图时)。要重新启用计时器,然后[[UIApplication sharedApplication] setIdleTimerDisabled:NO];在视图消失时使用该计时器。
利亚姆·乔治·贝茨沃思

2
当应用失去焦点时,应用是否需要重新启用计时器,还是由操作系统自动处理?
斯坦·詹姆斯

5
斯坦-当应用程序主动辞职,操作系统将重新启用闲置模式,你就不会得叫[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
克里斯·斯特林格

恕我直言,它与您所说的位置没有区别。它始终是整个应用命中的结果,每个视图都保留在屏幕上,而不是变暗。
几十年



2

我已经将这行代码放入我的视图控制器中,但是我们仍然让客户说,屏幕会变暗或关闭,直到有人触摸屏幕。我看过其他帖子,不仅您以编程方式设置

UIApplication.sharedApplication().idleTimerDisabled = true 

为true,但您必须先将其重置为false

UIApplication.sharedApplication().idleTimerDisabled = false
UIApplication.sharedApplication().idleTimerDisabled = true

遗憾的是,这仍然无法正常工作,客户的屏幕仍然变暗。我们有Apple Configurator配置文件,可防止设备进入睡眠状态,但某些设备的屏幕仍然变暗,客户需要按主屏幕按钮才能唤醒屏幕。现在,我将这段代码放入一个计时器,该计时器每2.5小时触发一次以重置空闲计时器,希望它可以正常工作。


1
可悲的是,将代码放入可以在计时器上触发的函数中并不能解决问题。我将iPad放了24个小时以上,它没有变暗,也没有互动。根据我们一位客户的说法,用户在15分钟之前使用了设备,然后设备变暗了。
JMStudios.jrichardson,2016年

我遇到了同样的问题:我有一个视图控制器,在其中我设置了idelTimerDisabled = true(该应用程序应该在晚上一直保持打开状态,并有一个闹钟),并且在大多数情况下都可以运行,但是有时该应用程序处于后台运行晚上的某个时间。任何人都有一个想法可以将应用程序移到后台吗?或重置标志?
Yariv Adam

是的,您可以重置标志,我也正在这样做。我也有这个功能。事实证明,这是我们的MDM服务器上的“胭脂过程”,向我们的设备发送ping来使屏幕变暗。很烦人。
JMStudios.jrichardson

0

我们有同样的问题。原来是我们的MDM服务器上的恶意进程,该进程已在我们的帐户中删除,但服务器上仍在发送使设备变暗的命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.