首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在开发构建中,CGPreflightScreenCaptureAccess总是返回false

在开发构建中,CGPreflightScreenCaptureAccess总是返回false
EN

Stack Overflow用户
提问于 2021-12-31 00:01:36
回答 3查看 602关注 0票数 1

我正在用Xcode 13.2.1为macOS编写一个应用程序(本地为12.1)。我需要截图访问,获得许可(在macOS 11及更高版本中)的最简单方法是使用CGRequestScreenCaptureAccess,并使用CGPreflightScreenCaptureAccess检查资格。

https://stackoverflow.com/a/65423834/444912

我的代码本质上是这样的:

代码语言:javascript
复制
let hasScreenAccess = CGPreflightScreenCaptureAccess();
if (!hasScreenAccess) {
    CGRequestScreenCaptureAccess()
}

当我运行一个新的构建时,就会像预期的那样出现一个模式:

我还可以看到我的应用程序出现在系统首选项中,也像预期的那样:

启用应用程序的权限会促使我退出应用程序并重新启动它。这将重新启动我的应用程序的制作副本,从应用程序商店。但是,如果我退出并在XCode中重新运行相同的构建,我的构建仍然没有被授予记录屏幕的权限(即使它在系统首选项中显示为已启用)。如何允许我的应用程序拥有在本地记录我的屏幕的权限?

EN

回答 3

Stack Overflow用户

发布于 2022-04-29 10:36:22

在重新命名我们的一个应用程序之后,我们遇到了一个类似的问题,该应用程序使用了/usr/sbin/screencapture命令行工具。无论系统首选项中的激活状态如何,每次触发屏幕捕获时都会出现安全提示。

在开发过程中,tccutil reset ScreenCapture {bundle identifier}命令帮助保持权限干净,以便进行后续测试。

票数 2
EN

Stack Overflow用户

发布于 2021-12-31 00:01:36

我在写这个问题的过程中解决了这个问题,所以我想我可以分享我的答案。如果我删除我的应用程序的副本从我的应用程序文件夹,似乎一切正常。我认为有某种“声称”的过程在进行。

如果我将应用程序的副本重命名在我的应用程序文件夹中,删除系统首选项中的屏幕记录,然后从Xcode中运行我的新构建,这似乎是可行的。

票数 1
EN

Stack Overflow用户

发布于 2022-05-13 04:48:49

在系统首选项中,它可以是应用程序的制作副本。您可能需要用调试构建应用程序替换它。

Preferences.

  • Locate中的
  1. 将其从System
  2. 删除,然后将其拖放到系统首选项中。

您的调试构建应用程序必须被授予权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70537845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档