2014-11-06 120 views
5

我正在構建我想在mac應用程序商店中分發的mac應用程序。我需要這個應用程序有鎖屏功能。從沙盒應用程序鎖定macbook屏幕

我有2種不同的方法工作,問題是,只要我能爲應用程序(這是需要在Mac App Store)沙箱,無論這些方法都無法運行。

你知道我需要哪個權利請求嗎?或者你知道第三種方法可以用於沙盒嗎?

感謝

方法1,使用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() 

方法2,使用IORequestIdle(SWIFT):

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

我很高興的方式 – saintmac 2014-11-07 10:48:06

+0

有什麼需要鎖屏Objective-C的解決方案?隱私?數據保護?爲什麼要鎖定整個Mac而不僅僅是你的應用程序?要鎖定整個mac,請求用戶激活系統偏好設置>安全>「需要密碼...睡眠或屏幕保護程序之後」並設置一個活動的角落以進入屏幕/屏幕保護程序的睡眠狀態。我懷疑這可以通過編程方式完成,因爲它涉及管理員權限。 – 2014-12-19 13:44:08

+0

因爲目標是鎖定mac。不是應用程序。 我們的目標是提供一個「鎖定按鈕」,而不是如何鎖定MAC(我們已經做在此期間) 它可以通過編程來完成的教程,因爲我們已經與應用程序在沙盒中做到了模式。問題是關於如何在沙盒模式下執行此操作(分發應用程序) – saintmac 2014-12-19 14:19:32

回答

0

遺憾地說,它不能做。沙盒的目的是爲了防止應用程序可以佔用整臺計算機。

您可能會嘗試得到一個臨時例外直通沙盒指南中提到的通道。