我正在寻找一种方法来使用Swift通过我的应用程序禁用睡眠模式和屏幕保护程序。我知道question已been问before,但没有一个答案是最新的(至少对于Swift;我不知道Objective-C)。
我原本以为使用NSWorkspace.sharedWorkspace().extendPowerOffBy(requested: Int)
,但根据Apple's documentation,它目前尚未实现。
有什么建议吗?
答案 0 :(得分:3)
我最近遇到了这个answer。它链接到Apple的Q&A1340,并将清单2翻译成Swift。
我将它重构为一些不同的代码,它们展示了如何在整个runloop中使用它们。我确实检查了代码,但它确实有效。
var assertionID: IOPMAssertionID = 0
var success: IOReturn?
func disableScreenSleep(reason: String = "Unknown reason") -> Bool? {
guard success != nil else { return nil }
success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep as CFString,
IOPMAssertionLevel(kIOPMAssertionLevelOn),
reason as CFString,
&assertionID)
return success == kIOReturnSuccess
}
func enableScreenSleep() -> Bool {
if success != nil {
success = IOPMAssertionRelease(noSleepAssertionID)
success = nil
return true
}
return false
}
Q&A1340 answer还指出使用NSWorkspace.shared
只应用于支持OS X< 10.6。