我希望我的应用程序继续运行并与用户交互,即使用户按下睡眠按钮。
到目前为止,我已经了解到,我的应用程序可以通过以下代码保持活力:
NSTimer *timer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
这成功了。
即使我处于睡眠模式,该方法也会每 0.5 秒调用一次。
- (void)timerFireMethod:(NSTimer*)theTimer
所以知道我的问题是:如何在睡眠模式下与我的应用程序交互?我只需要一个触发器来开始播放自定义音频文件。因此,我需要一个触发事件,例如检测:
- 显示屏上的触摸
- 加速活动
- MotionShake 事件
但是在获得applicationWillResignActive
-Event 之后,上述任何方法都不起作用。我的加速度计停止传递加速度事件。而且我无法再次启动它们。MotionShake 事件不会被传递,我不知道是否可以在睡眠时捕捉到触摸事件。
更新
我希望用户使用我的应用程序让我们说 5 小时。如果它空闲了一段时间,它会自己去睡觉。我可能误解了睡眠模式的含义。Iphone 应该一直启动并运行,但我不需要一直打开显示屏和背景灯(这些是最耗电的部分)。我知道每 10 秒播放一次无噪音的声音时,iphone 不会进入睡眠状态。而且我知道 iPod 应用程序能够在该模式下运行,并且用户可以通过摇动设备与它进行交互。那么应用程序没有任何官方方法可以做到这一点吗?
---
有人知道吗?
谢谢 Zensursula