macOS 10.15请求全局鼠标监听授权

2019-08-20  本文已影响0人  陈清平

1.背景

新的macOS10.15系统在监听全局鼠标、键盘事件的时候会弹出授权提示,

例如使用了CGEventTapCreate就会弹出监听输入授权提示 Screenshot2019_08_20_171323.jpg

2.主动授权

要主动授权就先要查询输入监听的授权状态,如果已授权则可以监听,没有授权过则进行访问授权,已拒绝可以弹出安全隐私界面要求用户授权。

#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
上一篇下一篇

猜你喜欢

热点阅读