Buduję aplikację na Maca, którą chcę rozpowszechniać w sklepie z aplikacjami Mac. Potrzebuję tej aplikacji, by mieć funkcję blokady ekranu.Zablokuj ekran MacBooka z aplikacji piaskownicy
Mam 2 różne podejścia działające, problem polega na tym, że jak tylko włączę sandboxing dla aplikacji (która jest wymagana dla sklepu z aplikacjami mac), żadne z tych podejść nie zadziała.
Czy wiesz, jakie uprawnienia muszę prosić? Czy znasz trzecie podejście, które będzie działać z piaskownicą?
Dzięki
Podejścia 1, stosując 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()
Podejście 2, stosując IORequestIdle (SWIFT):
var r = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler")
if (r > 0) {
IORegistryEntrySetCFProperty(r, "IORequestIdle", kCFBooleanTrue)
IOObjectRelease(r)
}
Jestem zadowolony z rozwiązania Objective-C przy okazji. – saintmac
Jaki jest potrzebny ekran blokady? Prywatność? Ochrona danych? Po co blokować cały komputer Mac, a nie tylko aplikację? Aby zablokować cały Mac, poproś użytkownika o aktywowanie Preferencji systemowych> Zabezpieczenia> "Wymagaj hasła ... po uśpieniu lub wygaszaczu ekranu" i ustaw aktywny róg, aby wejść w tryb uśpienia ekranu/wygaszacza ekranu. Wątpię, żeby to można było zrobić programowo, ponieważ wiąże się to z prawami administratora. –
Ponieważ celem jest zablokowanie mac. Nie aplikacja. Celem jest oferowanie "przycisku blokady", a nie samouczka, jak zablokować mac (co już robimy w międzyczasie). Można to zrobić programowo, ponieważ zrobiliśmy to już z aplikacją z Sandbox tryb. Pytanie brzmi, jak to zrobić w trybie piaskownicy (aby rozpowszechniać aplikację). – saintmac