如何使用Swift以编程方式使Mac进入睡眠状态

问题描述 投票:0回答:1

我正在编写程序,以使我的MacBook Pro在应用打开时进入睡眠状态,但我似乎无法弄清楚。我不知道这是与电源管理有关还是与之相关,但是从我发现的发现来看,这与IOKit.pwr_mgt有关。您的帮助将不胜感激!下面的代码只是如何启用睡眠模式,而不是使计算机进入睡眠模式。我还找到了applicationDidFinishLaunching函数,因此代码位于该函数中。

var assertionID: IOPMAssertionID = 0
var success = IOPMAssertionRelease(assertionID)
swift xcode macos sleep
1个回答
0
投票

与电源管理无关。您实际上需要在您的应用程序中运行脚本。

最简单的方法是首先禁用应用程序沙箱功能。

下一步转到您的应用info.plist并添加NSAppleEventsUsageDescription键和说明,类似于"This app needs your permission to put the display to sleep."

现在,您只需执行一个Apple脚本,告诉应用程序系统事件进入睡眠状态。 "tell application \"System Events\" to sleep"

创建执行该脚本的方法:

func startScreenSleep() {
    let script = "tell application \"System Events\" to sleep"
    guard let appleScript = NSAppleScript(source: script) else { return }
    var error: NSDictionary?
    appleScript.executeAndReturnError(&error)
    if let error = error {
        print(error[NSAppleScript.errorAppName] as! String)
        print(error[NSAppleScript.errorBriefMessage] as! String)
        print(error[NSAppleScript.errorMessage] as! String)
        print(error[NSAppleScript.errorNumber] as! NSNumber)
        print(error[NSAppleScript.errorRange] as! NSRange)
    }
}

并从ViewController的viewDidLoad方法中调用它:

override func viewDidLoad() {
    super.viewDidLoad()
    startScreenSleep()
}
© www.soinside.com 2019 - 2024. All rights reserved.