You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SwiftUI/Xcode 12.5下Mac应用获取辅助功能权限问题及开发阶段权限授予方法咨询

解决开发阶段Mac应用辅助功能权限无法授予的问题

我之前也碰到过这个问题,开发阶段的Mac应用经常会出现辅助功能权限识别不到的情况,给你几个实用的解决方法:

1. 手动添加编译后的应用到权限列表

开发中的.app文件路径是临时的,系统偏好设置不会自动识别到,你需要手动找到它并添加:

  • 在Xcode的项目导航栏里,找到Products文件夹,右键点击你的应用(后缀是.app),选择Show in Finder
  • 打开系统偏好设置 > 安全与隐私 > 隐私 > 辅助功能
  • 点击窗口左下角的锁图标,输入密码解锁
  • 把Finder里的.app文件直接拖到辅助功能的权限列表里,然后勾选它

⚠️ 注意:一定要拖你自己的应用,不是Xcode——Xcode和你的应用是完全独立的进程,给Xcode授权对你的应用没用。

2. 重置辅助功能权限缓存

如果拖入应用后依然无效,可能是系统权限缓存出问题了,用终端命令重置:

  • 打开终端,运行以下命令:
    tccutil reset Accessibility
    
  • 重置后重启你的应用,再次调用AXIsProcessTrustedWithOptions,应该会触发系统的权限请求弹窗了。

3. 检查代码和项目配置

  • 确保你的项目已经导入了ApplicationServices框架:在Xcode的项目设置里,找到Build Phases > Link Binary With Libraries,添加ApplicationServices.framework
  • 如果你的应用开启了沙盒,还需要在Signing & Capabilities里添加Accessibility权限(搜索"Accessibility"并勾选)
  • 确认代码写法正确,Swift里的正确写法应该是:
    import ApplicationServices
    
    let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as NSString: true]
    let accessibilityEnabled = AXIsProcessTrustedWithOptions(options)
    

4. 刷新系统偏好设置

有时候系统偏好设置的权限列表没有实时刷新,你可以:

  • 关闭系统偏好设置,重新打开后再查看权限列表
  • 或者重启你的Mac,让系统重新加载权限配置

内容的提问来源于stack exchange,提问作者pistacchio

火山引擎 最新活动