在Cocoa中获取机器唤醒+用户登录通知的可靠方法?

cod*_*ger 4 macos cocoa objective-c

我试着注册了NSWorkspaceDidWakeNotification[NSNotificationCenter defaultCenter],但是当我的MacBook Pro从睡眠状态唤醒它永远不会触发.我注册了火灾的其他通知,所以这不是我如何注册它的问题.

基本上我需要在用户的机器从睡眠中唤醒,并且用户已经重新登录,或者机器已经唤醒并且用户回到他们的帐户中时,如果没有向他们显示登录屏幕,则需要得到通知.如果我必须处理多个通知,那也没关系.

有什么想法吗?

谢谢!
科迪

feb*_*ing 7

通知NSWorkspaceDidWakeNotification不是来自默认通知中心.这有效:

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
                     selector:@selector(wakeFromSleep:)
                         name:NSWorkspaceDidWakeNotification
                       object:nil];
Run Code Online (Sandbox Code Playgroud)

关于这个问题,存在Apple Q&A 1340.

这仅涵盖您问题的清醒方面.您最初登录时没有收到通知,因为您的应用程序尚未运行.但是你可能意味着睡眠后解密的密码提示,你就可以了.