我希望我的应用程序能够继续运行并与用户交互,即使用户按下了睡眠按钮 到目前为止,我已经了解到,我的应用程序可以通过以下代码保持活力:
NSTimer *timer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
这成功了。方法
- (void)timerFireMethod:(NSTimer*)theTimer
即使我处于睡眠模式,也会每0.5秒调用一次。
所以我知道我的问题是:如何在睡眠模式下与我的应用程序进行交互?
我只需要一个触发器就可以开始播放自定义音频文件。因此我需要一个触发事件,例如检测:
- 触摸显示屏
- 加速活动
-a MotionShake活动
但在获得applicationWillResignActive
- 事件之后,以上任何内容都无效。我的加速度计停止加速事件的发送。我无法再次启动它们。
如果可以在睡觉时捕捉触摸事件,则不会传递MotionShake事件,我不知道。
更新的
我希望用户可以使用我的应用程序,比如5小时。如果它闲置一段时间,它将自己进入睡眠状态。
我可能误解了我对睡眠模式的意思。 Iphone应该一直在运行,但我不需要显示器和背景灯一直打开(这些是耗电最多的部件)。我知道,每隔10秒播放一次无声的声音,iphone就不会睡觉了。我知道IPod应用程序能够以该模式运行,用户可以通过摇动设备与其进行交互。那么应用程序是否有任何官方方式来做同样的事情?
的 ---
有人有什么想法吗?
谢谢Zensursula
答案 0 :(得分:3)
在您的应用程序调用{{3}}后,您只需停止接收事件:
委托可以实现此方法 当做出调整时 应用程序从活动转换 状态为非活动状态。当一个 应用程序处于非活动状态 执行但不调度 传入的事件。这发生在 弹出覆盖窗口或何时弹出 设备已锁定。
睡眠模式是节省能源。为此,设备会停止侦听您要求的事件。
NSTimer事件仍将触发,因为它们不需要昂贵的(电池级)硬件监控。此外,使用NSTimer实现警报,因此即使在睡眠状态下它们也需要能够运行。否则,人们可能不会醒来并责怪他们的iPhone。