以编程方式检查OS X上的请勿打扰状态

Eri*_*rik 10 macos cocoa objective-c

使用Objective-C,如何以编程方式检查OS X上系统"请勿打扰"设置的状态?我使用黑客或私有API很好,因为我不需要提交到Mac App Store.

cle*_*ens 7

您可以(并且应该)简单地使用UserDefaults:

let theDefaults = UserDefaults(suiteName: "com.apple.notificationcenterui")
print(theDefaults?.bool(forKey: "doNotDisturb"))
Run Code Online (Sandbox Code Playgroud)

  • 这在大苏尔不再有效。无论 DnD 设置如何,“last-analytics-stamp”都是“com.apple.notificationcenterui”中的唯一条目。 (2认同)

Nex*_*xD. 2

这个答案描述了如何使用命令行读取和写入“请勿打扰”的状态。

\n\n

请注意,文件名包含您的 Mac 的硬件 UUID。为简单起见,它是下面代码中的常量。您可以使用内置的系统信息应用程序来计算它。\n还有不同的方法可以通过编程方式获取它,例如我还没有尝试过\xe2\x80\x99t。

\n\n

使用Swift ,可以如下读取plist文件的内容:NSDictionary

\n\n
import Foundation\n\n// Get path to file\nlet uuid = "00000000-0000-0000-0000-000000000000"\nlet filepath = "~/Library/Preferences/ByHost/com.apple.notificationcenterui.\\(uuid).plist".stringByExpandingTildeInPath\n\n// Load file as `NSDictionary`\nif let dict = NSDictionary(contentsOfFile: filepath) {\n\n    // Get state of Do Not Disturb\n    let doNotDisturbState = dict["doNotDisturb"] as? Bool\n    println(doNotDisturbState)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我测试它时,有时需要几秒钟的时间才能更新plist文件的内容,因此您不会在更改后立即获得新状态。

\n