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)
现在应该打开一个对话框,转到设置以授予应用程序辅助功能访问权限,该应用程序现在应该显示在列表中。
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |