Wie kann ich unter Objective-C programmatisch den Status der Systemeinstellung "Nicht stören" unter OS X überprüfen? Es ist in Ordnung, Hacks oder private APIs zu verwenden, da ich nicht an den Mac App Store senden muss.Programmatische Überprüfung des Status von "Bitte nicht stören" unter OS X
Antwort
This answer beschreibt, wie Sie den Status nicht stören über die Befehlszeile lesen und schreiben.
Beachten Sie, dass der Dateiname die Hardware-UUID Ihres Computers enthält. Der Einfachheit halber ist es eine Konstante im folgenden Code. Sie können es mit der integrierten System Information App herausfinden. Es gibt auch verschiedene Möglichkeiten, es programmgesteuert zu bekommen, like this, die ich noch nicht ausprobiert habe.
Mit Swift, den Inhalt der plist Datei kann als NSDictionary
wie folgt gelesen werden:
import Foundation
// Get path to file
let uuid = "00000000-0000-0000-0000-000000000000"
let filepath = "~/Library/Preferences/ByHost/com.apple.notificationcenterui.\(uuid).plist".stringByExpandingTildeInPath
// Load file as `NSDictionary`
if let dict = NSDictionary(contentsOfFile: filepath) {
// Get state of Do Not Disturb
let doNotDisturbState = dict["doNotDisturb"] as? Bool
println(doNotDisturbState)
}
Als ich es getestet, dauerte es manchmal mehrere Sekunden für den Inhalt des plist Datei wird aktualisiert, daher erhalten Sie den neuen Zustand nicht unmittelbar nach der Änderung.
Weißt du, was die notwendigen Sandbox-Ausnahmen für diese Methode wäre? –
Sie sollten niemals direkt auf Benutzereinstellungen per Datei zugreifen, da macOS einen Dienst zur Verwaltung verwendet. Daher kann der Inhalt der Datei und die Antwort von 'NSUserDefaults'' valueForKey' abweichen. – clemens
Sie können (und sollten) einfach NSUserDefaults verwenden:
let theDefaults = NSUserDefaults(suiteName: "com.apple.notificationcenterui")
print(theDefaults?.boolForKey("doNotDisturb"))
In Objective-C, können Sie den Wert wie folgt zugreifen:
NSUserDefaults* defaults = [[NSUserDefaults alloc]initWithSuiteName:@"com.apple.notificationcenterui"];
BOOL dnd = [defaults boolForKey:@"doNotDisturb"];
Swift 4
UserDefaults(suiteName: "com.apple.notificationcenterui")?.bool(forKey: "doNotDisturb")
- 1. Android: Status "Nicht stören" erkennen?
- 2. Einstellung "Bitte nicht stören" in IOS6 lesen
- 3. InputManager unter OS X
- 4. Systemproxy funktioniert nicht unter OS X Mavericks
- 5. Qt4Dotnet unter Mac OS X
- 6. Spezifikation von signierten Binärdateien unter OS X
- 7. Anwendungsaktualisierungen unter Mac OS X
- 8. iReport startet nicht unter OS X Yosemite
- 9. Kann nicht unter OS X 10.10
- 10. Meldung unter OS X 10.7 funktioniert nicht?
- 11. Ermitteln des angemeldeten Benutzernamens unter Mac OS X 10.5
- 12. Installation von YARA unter OS X 10.11?
- 13. Installieren von Readline 6.0 unter OS X
- 14. Einrichten von SDL unter OS X 10.8
- 15. Auflisten von installierten Browsern unter OS X
- 16. Einrichten von Java3D unter OS X Leopard
- 17. Installieren von Git unter OS X
- 18. Tensorflow ImportError unter OS X
- 19. Python CGIHTTPServer Zugriff unter OS X verweigert
- 20. installation openssl unter OS X
- 21. Einstellen der anfänglichen Fenstergröße einer App unter OS X?
- 22. Aktualisieren von Python unter OS X 10.4.11
- 23. Installieren von GCC 4.7.1 unter OS X
- 24. Aktualisieren von Ruby unter Mac OS X
- 25. HTTP-Kommunikationsüberwachung unter OS X
- 26. didReadRSSI unter iOS aufgerufen, aber nicht unter OS X
- 27. Programmatische Änderung der Bildschirmdrehung unter Mac OS mit Xcode
- 28. Installieren Sie CLSQL unter Mac OS X
- 29. Erstellen von RDoc Ruby Gem Standard unter Mac OS X
- 30. Installation von Homebrew nicht möglich unter OS X 10.8.3
Haben Sie eine Lösung gefunden? Wenn ja, dann poste es bitte, ich brauche es dringend. – Mrug
Ich habe nie eine Lösung gefunden, ich gab – Erik