空闲计时器从未激活,因此App永远不会睡觉

时间:2016-10-13 20:10:34

标签: ios objective-c timer idle-timer

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

  1. 在应用开始时使用此代码来停用应用计时器:

    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];

  2. 睡眠定时器到期时:

    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];

  3. 一旦用户首选项中的自动锁定值启动,屏幕就会变暗,应用程序就会睡着。

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

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

    还有什么可以防止设备睡觉?当应用程序没有任何交互。我的设备运行9.3.3以防万一。

1 个答案:

答案 0 :(得分:0)

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

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

然而,这可以防止设备睡眠 - 声音继续播放。所以我现在做的是,一旦屏幕被锁定,我将audioSession的类别更改为

[audioSession setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError];

然而,这引起了另一个我尚未想到的问题......