观察新的系统通知OSX

时间:2017-08-09 14:28:19

标签: macos notifications macos-sierra messages

是否可以收听/观察macOS收到的新通知?

我的意思是当收到新的iMessage或Slack消息时(基本上所有导致NotificationCenter显示通知的内容)

1 个答案:

答案 0 :(得分:4)

简短回答:这是不可能的。

除非应用程序提供特定的API,否则您无法观察应用程序发送的用户通知。例如,iMessage和Mail的AppleScript字典包含可以响应的事件脚本。但是,用户通知将封装在目标应用程序中。

有一个名为DistributedNotificationCenter的全局通知类,一个通知调度机制,可以跨任务边界广播通知。某些进程正在发送分布式通知,但它完全是不同的功能为UserNotification。例如,TimeMachine引擎进程backupd在运行备份时发送分布式通知。

您可以使用

订阅所有分发的通知
DistributedNotificationCenter.default().addObserver(self, selector: #selector(handleNotifications(_:)), name: nil, object: nil)

但我怀疑iMessage在收到邮件时会发送分发通知。