验证macOS应用程序以将Mac从睡眠中唤醒

验证macOS应用程序以将Mac从睡眠中唤醒,macos,authentication,iokit,Macos,Authentication,Iokit,我正在寻找一种验证macOS应用程序的方法,该应用程序可以将用户的Mac从睡眠中唤醒 我知道我可以使用与所提供代码类似的代码安排电源事件来唤醒计算机 当我运行IOPMSchedulePowerEvent代码时,下面代码中“result”的值是(IOReturn)result=-536870207 IOReturn result = IOPMSchedulePowerEvent(CFBridgingRetain(someCFDate), NULL, CFSTR(kIOPMAutoWake));

我正在寻找一种验证macOS应用程序的方法,该应用程序可以将用户的Mac从睡眠中唤醒

我知道我可以使用与所提供代码类似的代码安排电源事件来唤醒计算机

当我运行IOPMSchedulePowerEvent代码时,下面代码中“result”的值是(IOReturn)result=-536870207

IOReturn result = IOPMSchedulePowerEvent(CFBridgingRetain(someCFDate), NULL, CFSTR(kIOPMAutoWake));
在做了一些挖掘并找到了有类似问题的人之后,我很有信心,我的问题的根源在于需要对应用程序进行身份验证,以使其能够将用户的Mac从睡眠中唤醒。我已经找到了一些用于本地身份验证的苹果文档,但它似乎仍然没有完全解决我的问题

那么,简而言之,我如何向应用程序提供将Mac从睡眠中唤醒所需的身份验证

编辑:我一直在研究这个问题,我认为我已经取得了很好的进展

首先,我之所以获得
kIOReturnNotPrivileged
,是因为你必须在Xcode中以root用户身份运行应用程序。这可以通过产品>方案>编辑方案编辑调试方案,并将“调试过程为”选项更改为“根”来实现

将应用程序设置为以root用户身份运行,我可以正确地安排电源事件,使我的机器进入睡眠状态,并在规定的时间将其唤醒


如果你的应用程序已经沙盒化并以root用户身份运行,那么在Xcode 8.3中可能会出现一些其他问题。我将创建另一个帖子来问这个问题

实际上,您得到的返回值是
kIOReturnNotPrivileged
。您的应用程序是否已沙盒化?您是否尝试过从特权助手运行此操作?请注意,您链接到的LocalAuthenticationAPI更多地是关于Touch ID的,而不是其他任何内容。Hi@jtbandes。是的,我的应用程序是沙盒。我看了你所附的文件。看来一个有特权的助手可能会帮我得到我需要的东西。但是,使用特权助手似乎会禁止将应用提交到应用商店。我假设没有很多其他方法可以让应用程序将计算机从睡眠中唤醒,那么首先禁止睡眠是否更好,比如苹果文档中的内容