Это не связано с управлением питанием. Вам действительно нужно будет запустить скрипт с вашим приложением.
Самый простой способ выполнить sh - это сначала отключить возможность изолированной программной среды приложения.
Далее go в вашем приложении 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)
}
}
И вызовите его из метода viewDidLoad
вашего ViewController:
override func viewDidLoad() {
super.viewDidLoad()
startScreenSleep()
}