gpt4 book ai didi

macos - 防止 Mac 操作系统上的 sleep

转载 作者:行者123 更新时间:2023-12-03 17:21:54 27 4
gpt4 key购买 nike

我的应用程序似乎无法阻止 Mac OS Mountain Lion 上的系统 sleep 。

这是它应该做的事情:

Cocoa 应用程序使用 launchd 进程在特定时间启动。防止系统 sleep 是在应用程序启动时使用 IOPMAssertionCreateWithName 完成的。该应用程序只有一个(隐藏的)WebView,调用多个 URL,解析内容,将结果发送到网络服务器,然后退出。

这是我防止 sleep 的代码:

- (void)preventSleep
{
CFStringRef reasonForActivity= CFSTR("Content parsing");

IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
kIOPMAssertionLevelOn, reasonForActivity, &self.assertionID);
if (success == kIOReturnSuccess)
{
Log([NSColor orangeColor], @"Prevent sleep\n");
}
}

这就是正在发生的事情:

launchd 进程工作正常。 sleep 中的系统被唤醒,应用程序启动,在我的日志中打印“防止 sleep ”,解析一些 URL,但几秒钟后系统突然进入休眠状态。

发生了什么?

IOPMAssertionCreateWithName 是否可能无法在没有用户事件的系统上使用 launchd 启动的应用程序?

如何防止系统在我的应用程序处理时休眠?

最佳答案

如果未检测到用户事件,OS X 10.7 将返回 sleep 状态。您可以使用以下函数模拟用户事件:

UpdateSystemActivity(OverallAct);

请注意,这将打开屏幕。

关于macos - 防止 Mac 操作系统上的 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22349527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com