我怎么知道另一个 Mac 应用是否延迟了闲置睡眠?

How can I know if another Mac app has delayed idle sleep?

我有一个非沙盒 OS X 应用程序,它需要知道是否有任何其他应用程序正在延迟空闲睡眠(通过使用 IOPMAssertionCreateWithName() and/or IOCancelPowerChange) .

我不需要知道为什么,我只需要知道他们出于某种原因延迟它,这意味着我的应用程序应该在尝试锁定屏幕之前等待,因为用户当前正在使用系统(例如观看视频)。

有没有办法知道空闲睡眠被暂时延迟了?

看来您可以使用 IOPMCopyAssertionsStatus()。这将输出一个字典,指示各种断言的系统范围断言级别。查找 kIOPMAssertionTypePreventUserIdleDisplaySleep 的值(或 kIOPMAssertionTypePreventUserIdleSystemSleep,如果这是您真正想要的)。如果它存在并且大于 0,则说明有什么东西阻止了闲置 display/system 睡眠。