快速禁用OS X中的睡眠模式

Nat*_*per 3 macos xcode swift

我用Xcode开发了一个OS X应用程序,当我打开Mac时,我希望它不进入睡眠状态。我知道您在iOS Swift中使用:

UIApplication.sharedApplication().idleTimerDisabled = true
Run Code Online (Sandbox Code Playgroud)

但是,如何使用OS X Swift?

zpa*_*ack 7

当前的方式显示在技术质量检查1340中。表面上它与睡眠和唤醒通知有关,但请查看清单2,标题为“在Mac OS X 10.6 Snow Leopard中使用I / O Kit防止睡眠”。基本上IOPMAssertionCreateWithName,您可以使用进入不允许睡眠的状态,然后IOPMAssertionRelease在完成后致电。

我没有示例代码,因为我个人没有使用它,但是将技术说明中的代码移植到Swift会非常简单。

更新:该API 在10.6 中引入,但是在最新的OS中仍然可以正常工作,据我所知,它仍然是首选的实现方法。在Swift中也可以使用。

import IOKit
import IOKit.pwr_mgt

let reasonForActivity = "Reason for activity" as CFString
var assertionID: IOPMAssertionID = 0
var success = IOPMAssertionCreateWithName( kIOPMAssertionTypeNoDisplaySleep as CFString,
                                            IOPMAssertionLevel(kIOPMAssertionLevelOn), 
                                            reasonForActivity,
                                            &assertionID )
if success == kIOReturnSuccess {
    // Add the work you need to do without the system sleeping here.

    success = IOPMAssertionRelease(assertionID);
    // The system will be able to sleep again.
}
Run Code Online (Sandbox Code Playgroud)


小智 -1

如果您试图阻止空闲触发的睡眠,IOCancelPowerCharge 可能会起作用。但如果手动触发睡眠,它将不起作用

  • 我该怎么做呢?我在网上找不到任何告诉我如何做的信息。 (3认同)