1
我的應用程序似乎無法阻止Mac OS Mountain Lion上的系統睡眠。在Mac OS上預防睡眠
下面是它應該做的:
Cocoa應用程序被使用的桌面進程在某個時間推出。在使用IOPMAssertionCreateWithName啓動應用程序時完成防止系統休眠。應用程序只有一個(隱藏的)WebView,調用幾個URL,解析內容,將結果發送到Web服務器,退出。
這裏是我的代碼,以防止睡眠:
- (void)preventSleep
{
CFStringRef reasonForActivity= CFSTR("Content parsing");
IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
kIOPMAssertionLevelOn, reasonForActivity, &self.assertionID);
if (success == kIOReturnSuccess)
{
Log([NSColor orangeColor], @"Prevent sleep\n");
}
}
這是怎麼回事:
的桌面進程中正常工作。休眠系統喚醒,應用程序啓動,在日誌中打印「預防睡眠」,解析一些URL,但幾秒鐘後系統突然入睡。
發生了什麼事?
IOPMAssertionCreateWithName可能不適用於launchd在沒有用戶活動的系統上啓動的應用程序?
如何在應用程序正在處理時阻止系統進入睡眠狀態?
我正在使用10.9。自10.8以來,UpdateSystemActivity已棄用。替換爲IOPMAssertionCreateWithName。 它仍然是功能?由於這是一個私人項目,我至少試過它。 – DaneOzzo
我可以確認它在10.9上仍然有效。只要有人使用Snow Leopard,Apple就無法將這個功能放到他們的圖書館中! – MrAsterisco
猜你是對的。現在我正在使用IOPMAssertionCreateWithName和UpdateSystemActivity。但是,由於某種原因,系統仍然會睡覺。 每天早上我都會喚醒mac,檢查日誌並繼續解析。有任何想法嗎? – DaneOzzo