2014-11-06 13 views
5

Ich baue eine Mac App, die ich im Mac App Store verteilen möchte. Ich brauche diese App, um eine Sperrbildschirm-Funktion zu haben.Macbook Bildschirm von einer Sandbox-App sperren

Ich habe zwei verschiedene Ansätze arbeiten, das Problem ist, sobald ich Sandboxing für die App aktivieren (die für den Mac App Store erforderlich ist), keiner dieser Ansätze wird funktionieren.

Wissen Sie, welche Berechtigung ich anfordern muss? Oder kennen Sie einen dritten Ansatz, der mit Sandboxing funktioniert?

Dank

Ansatz 1, mit CGSession (swift):

var arguments = ["-suspend"] 
var task = NSTask() 
task.arguments = arguments 
task.launchPath = "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession" 
task.launch() 

Ansatz 2, IORequestIdle (swift) mit:

var r = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler") 
if (r > 0) { 
    IORegistryEntrySetCFProperty(r, "IORequestIdle", kCFBooleanTrue) 
    IOObjectRelease(r) 
} 
+0

Ich bin übrigens mit einer Objective-C-Lösung zufrieden – saintmac

+0

Was ist der Sperrbildschirm? Privatsphäre? Datenschutz? Warum sperren Sie den gesamten Mac und nicht nur Ihre Anwendung? Um den gesamten Mac zu sperren, bitten Sie den Benutzer, die Systemeinstellungen> Sicherheit> "Kennwort erforderlich ... nach dem Energiesparmodus oder Bildschirmschoner" zu aktivieren und eine aktive Ecke für den Ruhezustand des Bildschirms/Bildschirmschoners festzulegen. Ich bezweifle, dass dies programmatisch erfolgen kann, da es Administratorrechte beinhaltet. –

+0

Weil das Ziel ist, den Mac zu sperren. Nicht die App. Das Ziel ist es, eine "Lock-Taste", kein Tutorial zum Sperren des Mac (was wir schon in der Zwischenzeit tun) Es kann programmgesteuert gemacht werden, weil wir es bereits mit der App aus Sandbox getan haben Modus. Die Frage ist, wie man es im Sandbox-Modus macht (um die App zu verteilen) – saintmac

Antwort

0

Leider es nicht getan werden sagen können . Der Zweck von Sandboxing besteht darin, zu verhindern, dass eine App den gesamten Computer auslastet.

Sie könnten versuchen, eine temporäre Ausnahme durch die Kanäle zu erhalten, die im Sandbox-Handbuch dokumentiert sind.

Verwandte Themen