Objective-C:检查OS X上每个应用程序的请勿打扰状态

Cat*_*ila 3 macos cocoa objective-c

MAC OS X具有每个应用程序的设置,您可以针对特定应用程序打开"请勿打扰模式":https://www.reddit.com/r/apple/comments/2r0bji/do_not_disturb_mode_in_os_x_when_using_a_specific/

另外......有一种方法可以检测整个系统的DND模式,基于此:以编程方式检查OS X上的请勿打扰状态

但是,是否有任何API可以让我对每个应用程序进行检查,看看它是否启用了DND?

Wil*_*nes 5

没有每个应用在MacOS上请勿打扰.

你最接近的可能就是检索enabledRemoteNotificationTypes方法NSApplication

这将返回一个NSRemoteNotificationType值,该值包含一个位掩码,其值指示应用程序请求的推送通知的类型.

可能的值是:

NSRemoteNotificationTypeNone - 该应用不应显示徽章.

NSRemoteNotificationTypeBadge - 应用程序应显示徽章.

NSRemoteNotificationTypeSound - 该应用程序应播放声音.

NSRemoteNotificationTypeAlert - 应用程序应显示警报.

这仅对当前正在运行的应用程序有用,您可以从Apple Developer站点获取更多信息

另一个可能的地方:

您可以在以下目录中找到NotificationCenter使用的SQLite数据库: getconf DARWIN_USER_DIR+ /com.apple.notificationcenter/db,但要小心,因为我的不在/db,最新版本在/db2

在Yosemite之前,这个文件位于~/Library/Application\ Support/NotificationCenter/

我没有浏览过这个数据库所以我无法告诉你这里是否有适用的设置,但它是一个开始寻找的好地方.

如果您在App Store上发布您的应用程序,由于沙盒,您可能无法使用此方法,但无论如何都值得尝试.