macOS 中的事件通知

Posted

技术标签:

【中文标题】macOS 中的事件通知【英文标题】:Event notifications in macOS 【发布时间】:2019-07-22 11:37:28 【问题描述】:

macOS 应用程序是否可以侦听来自另一个应用程序的特定事件?

我想检测 Time Machine 备份的启动时间,以便为 sparsebundle 所在的 NAS 文件夹创建时间点快照。

【问题讨论】:

【参考方案1】:

Time Machine 引擎发送分布式通知

添加观察者

Objective-C

[[NSDistributedNotificationCenter defaultCenter] addObserver:self
                                                   selector:@selector(handleNotifications:)
                                                       name:nil
                                                     object:nil];

斯威夫特

DistributedNotificationCenter.default().addObserver(self, selector: #selector(handleNotifications), name: nil, object: nil)

并实现对应的选择器

Objective-C

- (void)handleNotifications:(NSNotification *)notification 
    NSLog(@"%@", notification);

斯威夫特

@objc func handleNotifications(_ notification : Notification) 
    print(notification)

您必须过滤与 Time Machine 相关的通知。也可以通过name参数观察具体通知

【讨论】:

以上是关于macOS 中的事件通知的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程

如何在 macOS 上检测 SwiftUI 中的键盘事件?

如何在 macOS 上检测 SwiftUI 中的键盘事件?

Mac 鼠标/键盘事件的监听和模拟

在 MacOS 中网络推送没有声音

响应 SwiftUI 中的按键事件