【问题标题】:Observe for new System Notifications OSX观察新的系统通知 OSX
【发布时间】:2018-01-17 12:16:46
【问题描述】:

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

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

【问题讨论】:

  • 您有没有找到监控它们的方法?我已经尝试监视通知中心数据库的文件更改,但这不起作用。 sqlite-wal 修改不会触发 fswatch 之类的应用程序的 FSevents :( 每 X 秒运行一次脚本以检查新通知是可行的,但这似乎不是很有效

标签: macos notifications macos-sierra messages


【解决方案1】:

简答:不可能。

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


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

您可以使用

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

但我怀疑 iMessage 在收到消息时会发送分布式通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多