将 macOS 应用程序添加到隐私系统偏好设置中的辅助功能列表

Mar*_*932 5 macos accessibility privacy keyevent swift

我正在开发一个 macOS 应用程序,它是一个后台应用程序,因此我想在按下键盘按键时执行特定的功能。我从苹果文档中读到必须使用addGlobalMonitorForEvents(matching:handler: ) 。而且要使用此功能,必须启用可访问性。我使用AXIsProcessTrustedWithOptions检查了可访问性,该功能已实现且工作正常。我向用户发出警报,要求启用可访问性,如果用户同意,隐私系统首选项窗口中的可访问性将打开。现在,我面临的问题是该应用程序不存在于辅助功能列表中,因此用户必须手动将应用程序添加到列表中。有没有办法以编程方式(SWIFT)将应用程序添加到辅助功能列表中?

Kha*_*lil -1

海马拉V932,

这很简单,您只需添加以下内容即可:

<key>NSUserInterfaceAccessibility</key>
<dict>
    <key>Enabled</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

到您的<AppName>.entitlements文件,然后再次重建您的项目,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-only</key>
    <true/>
</dict>
<key>NSUserInterfaceAccessibility</key>
<dict>
    <key>Enabled</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

然后将此功能添加到您的项目中

import Foundation

func isAccessibilityEnabled() -> Bool {
    let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as NSString: true]
    return AXIsProcessTrustedWithOptions(options)
}
Run Code Online (Sandbox Code Playgroud)

.onAppear函数中调用函数,如下所示:

<key>NSUserInterfaceAccessibility</key>
<dict>
    <key>Enabled</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

现在应该打开一个对话框,转到设置以授予应用程序辅助功能访问权限,该应用程序现在应该显示在列表中。