目前我正在尝试接触 Swift 编程。我尝试从我的内部执行命令行命令macOS Swift 应用程序。没有将我的应用程序设置为沙箱,一切都工作正常。但由于我激活了沙箱,该命令将不再起作用,但不会抛出任何错误并以状态代码终止0
.
所以最简单的用例是开始VSCode
从我的申请中。
负责执行 shell 命令的方法如下:
func executeUserCommand(command: String, args: [String]?) -> Int32{
let task = Process()
task.launchPath = "/usr/local/bin/" + command
task.arguments = args
task.launch()
task.waitUntilExit()
return task.terminationStatus
}
}
所以如果我想开始VSCode
I call executeUserCommand("code", ["."])
用于打开VSCode
在当前目录中。
这工作正常,直到我启用App Sandbox
在 Xcode 中。我清理并重建应用程序,但现在VSCode
根本没有启动,但终止状态是0
。我很确定沙箱限制了对/usr/local/bin
目录。
有什么方法可以让我的应用程序仅访问此特定文件夹吗?这样用户就可以授予我的应用程序对该文件夹的访问权限一次,然后应用程序就可以访问该文件夹,即使在应用程序重新启动后也是如此?
提前致谢
是的,我已经这么认为了,但我在考虑是否可以明确要求用户向应用程序授予此特定文件夹的权限
你的思考方向是正确的。显然,如果沙箱应用程序无法访问文件和文件夹,它们将毫无用处,而它们这样做的关键是用户授予它们权限。此权限是使用标准打开和保存对话框授予的,当用户选择文件/文件夹时,应用程序将被授予读/写/创建它的权限。
需要访问特定文件/文件夹?自定义打开的对话框以引导用户选择特定的文件/文件夹,并检查结果以确保他们有 - 当他们选择不这样做时处理情况。
希望您的应用程序在启动时保留用户授予的对文件/文件夹的访问权限?然后你需要创建并存储一个安全范围书签.
是时候做一些阅读了,如果你遇到困难,提出一个新问题,毫无疑问有人会帮助你。请记住展示您发现的内容、您编写的代码等。
HTH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)