我有一个具有屏幕共享功能的应用程序。在macOS Catalina beta8(19A558d)上,您必须授予权限屏幕录制权限才能共享屏幕(没有权限,仅背景和菜单栏将与另一端共享)。不幸的是,我真的不知道哪个事件或调用会触发系统模式对话框,有时会出现该对话框,有时却没有(系统模式对话框显示在第75页:https : //devstreaming-cdn.apple.com/videos /wwdc/2019/701ngx868rfo8jlj/701/701_advances_in_macos_security.pdf?dl=1)。因此,这绝对是不确定的。如果不与该模式对话框进行交互,则我的应用程序将不会在“安全和隐私/屏幕录制”下注册,因此我无法授予其许可。有人有什么想法,我该如何解决这个问题?
屏幕录制提示将仅出现一次-首次调用试图记录用户屏幕的API时,例如:
CGDisplayStreamRef stream = CGDisplayStreamCreate(CGMainDisplayID(), 1, 1, kCVPixelFormatType_32BGRA, nil, ^(CGDisplayStreamFrameStatus status, uint64_t displayTime, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) { }); if (stream) { CFRelease(stream); }
如您所述,您的应用程序将不会出现在“屏幕录像”下的“系统偏好设置”中,直到您调用屏幕录像API从而触发系统提示。
如果触发了提示而用户拒绝了该提示,则无法再次显示该提示-用户必须在系统偏好设置中手动启用它。
在构建和测试此应用程序时,可以通过tccutil reset ScreenCapture com.company.appname.
Or使用All
代替重置应用程序的所有权限,就像从未使用过屏幕录制API一样重置应用程序的权限ScreenCapture
。