我有一个带有睡眠计时器的应用程序,用户可以选择在一定时间后,应用程序将暂停。基本上我要做的是:
-
在应用程序开始时使用以下代码来禁用应用程序计时器:
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
-
休眠定时器到期时:
[[UIApplication sharedApplication] setIdleTimerDisabled: NO];
一旦用户偏好设置中的自动锁定值打开,屏幕变暗,应用程序进入休眠状态。
它工作得很好,但由于某种原因不再工作。我正在排除故障,并已注释掉涉及setIdleTimerDisabled的命令,但它永远不会进入睡眠。
如果我用([UIApplication sharedApplication]. isidletimerdisabled)测试idleTimer的状态,我可以看到idleTimer实际上并没有被禁用,所以它不可能是那个
还有什么可以阻止设备睡眠?当应用程序没有任何交互时。如果有用的话,我的设备运行的是9.3.3。
我想我找到了答案——实际上有两个问题。1. 只要我在Xcode上运行和构建,应用就永远不会休眠(我认为)。2. 我的应用程序有声音,所以我这样做,以确保控制和音频仍然在设备锁定时工作:
audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
这将阻止设备进入睡眠状态——声音将继续播放。现在我要做的是,一旦屏幕被锁定,我将audioSession的类别改为
[audioSession setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError];
然而,这引起了另一个问题,我还没有弄清楚…