【发布时间】:2014-11-06 11:39:05
【问题描述】:
我正在构建一个我想在 mac 应用商店中分发的 mac 应用。我需要这个应用有锁屏功能。
我有两种不同的方法可以工作,问题是,一旦我为应用程序启用沙盒(这是 mac 应用商店所必需的),这些方法都不起作用。
您知道我需要申请哪项权利吗?或者您知道第三种适用于沙盒的方法吗?
谢谢
方法一,使用 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)
}
【问题讨论】:
-
顺便说一句,我对 Objective-C 解决方案很满意
-
锁屏需要什么?隐私?数据保护?为什么要锁定整个 Mac 而不仅仅是您的应用程序?要锁定整个 Mac,请用户激活系统偏好设置 > 安全 > “睡眠或屏幕保护程序后需要密码...”并设置一个活动角以进入屏幕/屏幕保护程序的睡眠状态。我怀疑这可以通过编程方式完成,因为它涉及管理员权限。
-
因为目标是锁定mac。不是应用程序。目标是提供一个“锁定按钮”,而不是关于如何锁定 Mac 的教程(同时我们已经在做)它可以通过编程方式完成,因为我们已经在应用程序退出沙盒模式的情况下完成了它。问题是如何在沙盒模式下进行(分发应用程序)
-
仅供参考,如果您在其首选项中启用相应选项,钥匙串访问应用程序可以始终在菜单栏中放置“锁定屏幕”项。
-
是的,我知道,谢谢,这就是我们的教程现在所说的
标签: macos swift sandbox mac-app-store entitlements