9

我希望我的 OSX 应用程序在用户的屏幕可用时调用一个函数,例如:他们的计算机从睡眠中唤醒或用户打开他们的屏幕。基本上任何时候用户从没有屏幕活动到有一个活动,我希望我的函数被调用。

我不确定最好的方法是否是:

其中哪一个似乎是最好的方法,还是我应该完全做其他事情?某种示例 Swift 代码将非常有用,因为实现这些代码的代码片段似乎很少而且相差甚远。谢谢。

4

2 回答 2

3

我能够在 OS X 10.10.5 上接收屏幕锁定和屏幕解锁通知。抱歉,我还不知道 Swift,所以这里是 Objective-C:

NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(screenIsLocked) name:@"com.apple.screenIsLocked" object:nil];
[center addObserver:self selector:@selector(screenIsUnlocked) name:@"com.apple.screenIsUnlocked" object:nil];

- (void)screenIsLocked {
    NSLog(@"screen is locked");
}

- (void)screenIsUnlocked {
    NSLog(@"screen is unlocked");
}
于 2016-01-08T01:29:13.073 回答
1

嗯,首先你必须测试,你是否可以用不同的技术得到所有情况的解决方案。有很多情况会打开显示器(系统重启、从睡眠中唤醒、连接/断开屏幕……)我不确定它们是否都是由所有技术触发的。

但是,作为一般规则:您想知道屏幕何时激活。因此,请使用告诉您屏幕已激活的通知。这是NSWorkspaceScreensDidWakeNotification. 只要它有效,我将始终使用最接近我想要的技术。

于 2016-02-29T09:03:35.210 回答