0

我有一个带有睡眠计时器的应用程序,用户可以选择在一定时间后,应用程序将暂停。基本上我所做的是:

  1. 在应用程序开始时使用此代码禁用应用程序计时器:

    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];

  2. 当睡眠定时器到期时:

    [[UIApplication sharedApplication] setIdleTimerDisabled: NO];

一旦用户首选项中的自动锁定值上升,屏幕就会变暗并且应用程序会进入睡眠状态。

它工作正常,但由于某种原因不再工作。我正在排除故障并已注释掉涉及 setIdleTimerDisabled 的命令,但它仍然不会进入睡眠状态。

如果我用 ([UIApplication sharedApplication].isIdleTimerDisabled) 测试 idleTimer 的状态,我可以看到 IdleTimer 实际上并没有被禁用,所以它不可能是那样。

还有什么可以阻止设备休眠?当应用程序没有任何交互时。如果有用,我的设备正在运行 9.3.3。

4

1 回答 1

0

我想我找到了答案——实际上有两个问题。1. 只要我在 Xcode 上运行和构建,应用程序就永远不会休眠(我认为)。2.我的应用程序有声音,所以我正在做这样的事情来确保设备锁定时控件和音频仍然有效:

audioSession = [AVAudioSession sharedInstance];
    NSError *setCategoryError = nil;
        [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];

但是,这会阻止设备进入睡眠状态——声音会继续播放。所以我现在要做的是,一旦屏幕被锁定,我将 audioSession 的类别更改为

[audioSession setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError];

然而,这导致了另一个我还没有弄清楚的问题......</p>

于 2016-10-14T22:16:41.257 回答