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

时间:2017-09-27 15:46:39

标签: objective-c macos cocoa

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

此外......有一种方法可以检测整个系统的DND模式,具体如下:Programmatically check state of do not disturb on OS X

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

1 个答案:

答案 0 :(得分:5)

macOS中有 no per-app 请勿打扰。

您最接近的可能是检索enabledRemoteNotificationTypes的{​​{1}}方法

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

可能的值是:

  

NSRemoteNotificationType - 应用不应显示徽章。

  NSRemoteNotificationTypeNone - 应用应显示徽章。

  NSRemoteNotificationTypeBadge - 应用程序应播放声音。

  NSRemoteNotificationTypeSound - 应用应显示提醒。

这对当前正在运行的应用程序非常有用,您可以从Apple Developer site

获取更多信息

另一个潜在的展示位置

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

在优胜美地之前,此文件位于/db2

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

如果你在App Store上发布你的应用程序,你可能因为沙盒而无法使用这种方法,但无论如何都值得一试。