在iOS 5.1中禁用自动屏幕locking

以下代码行可以防止应用程序在空闲一段时间后自动locking屏幕。

[UIApplication sharedApplication].idleTimerDisabled = YES; //write this in applicationDidFinishLaunching 

它运行良好,直到iOS 5.0。 但iOS 5.1并不尊重这条线,并在空闲时间后locking屏幕。 如何解决这个恼人的问题?

谢谢。

编辑:

当它安装在5.0.1设备中时,相同的代码工作正常。 但我不知道为什么它不与5.1设备工作。

只需设置[UIApplication sharedApplication].idleTimerDisabled = YES;

 - (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 

对我很好。 但是,有一个警告。 我注意到,每次我调用摄像头实用程序拍摄快照时, idleTimerDisable在场景后面设置为NO 。 所以,当我上传我的图片后,我不得不再次调用下面的代码行:

 [UIApplication sharedApplication].idleTimerDisabled = YES; 

如果有更多的地方需要相同的策略,我不会感到惊讶。 到目前为止,这种方法对我来说没有任何问题。

 [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; 

在iOS 5.1上为我工作

不, 应该没有区别。 也许你还有一个错误
请参阅iOS 5.0到5.1 API差异

重要提示:只有在必要时才应该设置此属性,并且当需要不再存在时,务必将其重置为NO。 当空闲计时器过去时,大多数应用程序应该让系统closures屏幕。 这包括audio应用程序。 通过适当使用audio会话服务,当屏幕closures时,播放和录制不会中断。 应该禁用空闲计时器的唯一应用程序是映射应用程序,游戏或类似的程序与零星的用户交互。

也许你超过了被允许的清醒时间限制?

我知道它是旧的,但我发现这个很好,在斯威夫特你可以做到这一点

application.idleTimerDisabled = true

谢谢你的答案! 我现在使用xcode 7 Beta 3(Swift 2)

如果您的应用程序注册了一些后台任务,例如GPS位置更新,则可以正常工作。

对于Swift,我使用这个在委托之外进行:

  UIApplication.sharedApplication().idleTimerDisabled = true