bem*_*l12 2 screen-recording xcode11 macos-catalina
我有一个具有屏幕共享功能的应用程序。在macOS Catalina beta8(19A558d)上,您必须授予权限屏幕录制权限才能共享屏幕(没有权限,仅背景和菜单栏将与另一端共享)。不幸的是,我真的不知道哪个事件或调用会触发系统模式对话框,有时会出现该对话框,有时却没有(系统模式对话框显示在第75页:https : //devstreaming-cdn.apple.com/videos /wwdc/2019/701ngx868rfo8jlj/701/701_advances_in_macos_security.pdf?dl=1)。因此,这绝对是不确定的。如果不与该模式对话框进行交互,则我的应用程序将不会在“安全和隐私/屏幕录制”下注册,因此我无法授予其许可。有人有什么想法,我该如何解决这个问题?
我在Ask Different.SE上回答了同样的问题。您需要tccutil重置这些权限。
重置屏幕录制应用程序的隐私数据库:
tccutil reset ScreenCapture
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道应用程序包标识符,则可以重置单个应用程序。
tccutil reset ScreenCapture [com.WHATEVERBUNDLE.YOURAPPID]
Run Code Online (Sandbox Code Playgroud)
重置隐私权限后,您必须退出应用程序,更改才会生效。然后您可以重新启动您的应用程序并再次尝试屏幕录制,提示应该会重新出现。
屏幕录制提示将仅出现一次-首次调用试图记录用户屏幕的API时,例如:
CGDisplayStreamRef stream = CGDisplayStreamCreate(CGMainDisplayID(), 1, 1, kCVPixelFormatType_32BGRA, nil, ^(CGDisplayStreamFrameStatus status, uint64_t displayTime, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) {
});
if (stream) {
CFRelease(stream);
}
Run Code Online (Sandbox Code Playgroud)
如您所述,您的应用程序将不会出现在“屏幕录像”下的“系统偏好设置”中,直到您调用屏幕录像API从而触发系统提示。
如果触发了提示而用户拒绝了该提示,则无法再次显示该提示-用户必须在系统偏好设置中手动启用它。
在构建和测试此应用程序时,可以通过tccutil reset ScreenCapture com.company.appname.Or使用All代替重置应用程序的所有权限,就像从未使用过屏幕录制API一样重置应用程序的权限ScreenCapture。
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |