macOS Catalina屏幕录制权限

5

我正在使用XCode中的C++开发屏幕录制应用程序。问题是,每次编译并启动应用程序时,都需要在“设置>隐私”中授予屏幕录制权限。

是否有一种类似于在XCode中始终授予权限的方式?在重新编译时手动授予权限真的很麻烦,特别是在开发/测试应用程序时。


这确实很麻烦。但我认为除非您在另一个驱动器上安装Mojave并在那里编写代码,否则您无法解决它。我希望我能回到Mojave。但我不能。 - El Tomato
2
对你的应用进行代码签名(在项目属性中启用自动签名即可)。只要包标识符和代码签名不变,macOS 就会认为每次都是同一个应用程序。 - TheNextman
当我在 Keychain 中写入敏感数据时,遇到了类似的问题。每次重新编译时,系统都会将您的应用程序视为不同的应用程序,因此会再次请求权限。您可以通过对调试版本进行代码签名来解决此问题。 - Guilmo
@zhadar 我有一个类似的问题,但我从未被要求授予权限,在隐私设置中我也无法将我的应用程序添加到允许进行屏幕录制的应用程序列表中。我该如何获得此权限? - mica
1个回答

9

签署调试版本

如果想要在开发时为 macOS 授予权限(例如麦克风或摄像头访问权限),你需要使用你的 AppleID 证书来签署调试版本。不论是使用 Swift/C++/Objective-C 或其他语言,都必须签署。

操作简单且免费:

  1. 点击项目
  2. 进入 "Signing & Capabilities"(签署与功能)
  3. 在 "Signing Certificate"(签署证书)中选择 "Development"(开发)
  4. 在 "Team" 中选择你的证书(如果没有任何证书,则会出现一个 "Add Team" 按钮,供你提供 AppleID 并下载免费证书)

设置完毕后,你的构建设置应该像这样: Properly configured build (你可能需要前往 "Product -> Clean Build Folder" 并重新编译)

如果权限被撤销...

如果系统仍然不授予你权限,则需要前往「系统偏好设置」-「安全性与隐私」-「隐私」,在适当的类别下撤销权限,并在重新编译后再次授予权限。这会提示你退出应用程序,请退出并重新运行应用程序。从现在开始,它将始终拥有权限。


这在Catalina上不起作用。我已经按照您在截图中指出的方式配置了我的代码签名。它适用于其他权限,但不适用于屏幕录制。每次编译应用程序时,它都会再次提示权限。 - gcstr
2
我以前遇到过这个问题。你可以尝试使用 tccutil reset All 命令重置所有隐私权限设置。这种方法在 Catalina 上绝对有效,因为这个问题只出现在 Catalina 上,而事实上我也在 Catalina 上遇到了这个问题 ;) - kiler129
1
谢谢@kiler129,我也尝试过了,但没有成功。对我有效的唯一方法是生成自签名证书,并将其设置在项目上,而不是在“开发”中。 - gcstr
只是想为其他人补充一些内容:如果您打开应用程序的发布版本(例如从Finder中双击它),然后授予权限,我发现在Xcode中构建未来版本会导致此问题。为了避免tccutil reset,我从Finder中删除了发布的.app文件(并清空了垃圾箱),从隐私设置中删除了我的应用程序的所有实例,然后在Xcode中进行了干净的构建 :) - Max Chuquimia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接