在Mac os 10.15之后,屏幕录制权限需要获取才能正确录屏,否则只能录制桌面背景以及自身app的影像。即可以截屏,但截不到其他app的内容。
屏幕录制权限检测
对于Mac os 10.15的屏幕录制权限检测,使用如下方法为最佳:
- (BOOL)canRecordScreen
{
if (@available(macOS 10.15, *)) {
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
NSUInteger numberOfWindows = CFArrayGetCount(windowList);
NSUInteger numberOfWindowsWithName = 0;
for (int idx = 0; idx < numberOfWindows; idx++) {
NSDictionary *windowInfo = (NSDictionary *)CFArrayGetValueAtIndex(windowList, idx);
NSString *windowName = windowInfo[(id)kCGWindowName];
if (windowName) {
numberOfWindowsWithName++;
} else {
//no kCGWindowName detected -> not enabled
break; //breaking early, numberOfWindowsWithName not increased
}
}
CFRelease(windowList)

在Mac OS 10.15及更高版本中,进行屏幕录制需获取权限。本文介绍了如何检测和申请权限,使用CGWindowListCreateImage进行屏幕内容捕获,并讨论了权限设置后可能导致的系统崩溃问题。同时,提供了清除App权限记录的方法,以解决权限获取的循环问题。参考了相关博客文章以深入理解这一主题。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



