1.背景
新的macOS10.15系统在监听全局鼠标、键盘事件的时候会弹出授权提示,
例如使用了CGEventTapCreate就会弹出监听输入授权提示 Screenshot2019_08_20_171323.jpg2.主动授权
要主动授权就先要查询输入监听的授权状态,如果已授权则可以监听,没有授权过则进行访问授权,已拒绝可以弹出安全隐私界面要求用户授权。
#import <IOKit/hidsystem/IOHIDLib.h>
if(@available(macos 10.15, *))
{
IOHIDAccessType theType = IOHIDCheckAccess(kIOHIDRequestTypeListenEvent);
NSLog(@"IOHIDCheckAccess = %d", theType);
switch (theType)
{
case kIOHIDAccessTypeGranted:
//同意
break;
case kIOHIDAccessTypeDenied:
{
//拒绝
NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent";
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
break;
}
case kIOHIDAccessTypeUnknown:
{
//未弹过提示框
bool result = IOHIDRequestAccess(kIOHIDRequestTypeListenEvent);
NSLog(@"IOHIDRequestAccess result = %d", result);
break;
}
default:
break;
}
}
重置输入监听授权状态
tccutil reset ListenEvent
网友评论