本文分享如何重置自动化(Automation 和 Apple Event)的相关设置,以解决 macOS 与 App 之间的奇怪故障。
有时 macOS 系统(特别是升级到 Catalina 后)会遇到奇怪的问题,比如通过自动化(Automation 和 Apple Event)控制其他 App 的 App,会遇到卡住的问题。表现为,比如这个 App 是在 Menubar 上的,你点了 Menubar 后就会转彩虹球:卡住了。
我开发的 Juice 就是这样一款这样的 App,它通过 Apple Event 去控制 Spotify 或 Apple Music,可以让用户方便的直接在菜单栏操作播放歌曲。
后来,我接到过一些用户的反馈,说刚开始用着好好的,后来点菜单栏图标就没有响应了,其中有用户比较肯定地说「Must be a Catalina thing」。这类问题通常是最头疼的,毕竟我无法重现它——而且通常也是操作系统引起的。终于,随着使用 macOS Catalina,我也遇到了这个问题!
于是我兴奋地开始 Debug Juice,发现它 Hang 在了 AEDeterminePermissionToAutomateTarget
这个 API 上:通过 Activity Monitor 的 Spindump 中可以看到。
直觉告诉我,重置系统 Automation 的相关设置后可以解决这个问题,于是找到了这个指令去重置它:
tccutil reset AppleEvents
或者直接用 Bundle ID 只重置该 App 的设置:
tccutil reset AppleEvents me.imtx.Juice
重置以后,会在系统偏好设置「安全性与隐私」的自动化里面,看到相关内容已经没有了,最后重启系统即可。
macOS Catalina 真是让人不省心的操作系统啊…