我的应用程序使用 mach_absolute_time 计算自上次触摸事件以来的滴答声,并在超过 10 分钟的空闲时间限制时将用户注销。
这一切在 iOS 6 上都可以正常工作,但我注意到它在 iOS 7 上的行为不正确。具体来说,当 iOS 7 设备被拔下(使用电池)时,似乎设备在进入睡眠状态后停止增加其滴答声控制台中的这一行(这发生在大约 5 分钟不活动后):
powerd[47] : 睡眠:使用 BATT(充电:99%)
因此,当我在 10 分钟后唤醒设备,并使用 mach_absolute_time 计算滴答声时,差异显示只有 5 分钟(实际上,已经过了 10 分钟)。
奇怪的是,一切正常,当设备插入电源时,滴答声继续运行。它从不显示设备在插入时将在控制台日志上进入睡眠状态(尽管屏幕确实关闭并且行为在视觉上与拔出时相同)。
我也尝试过使用clock_get_time,我在那里面临同样的问题。
当设备进入睡眠状态时,我可以在 iOS 7 中做些什么来保持 Mach 绝对时间滴答作响吗?我不想使用[[NSDate date] timeIntervalSince1970]
,因为用户能够操纵系统时间并绕过它。
感谢您的任何见解。