在 Apple Events 体系中,每个事件由Event Class(事件大类) + Event ID(具体动作)确定,Event Class 表示功能域/模块,Event ID表示具体操作。
底层是 4 字节标识(FourCharCode),例如:
'aevt' → Core Event Class
'GURL' → Get URL
在Swift中表现为:
typealias AEEventClass = UInt32
typealias AEEventID = UInt32
系统会根据这两个值把事件路由给正确的处理器。
常用Event Class分类
1、系统核心事件:kCoreEventClass,用于Finder、系统生命周期、文件打开。
常见 Event ID:
kAEOpenDocuments,打开文件(Finder 双击)。
kAEOpenApplication,启动 App。
kAEPrintDocuments,打印。
kAEQuitApplication,退出 App。
kAEReopenApplication,Dock 重新打开。
2、kInternetEventClass:互联网/URL相关事件,通过 yourapp:// 打开主 App。
常见 Event ID:
kAEGetURL,打开 URL Scheme(深层链接)。
3、kAECoreSuite:AppleScript核心套件,用于对象模型操作:get、set、delete,普通 GUI App 很少直接处理。
4、kAERequiredSuite:AppleScript必需套件,包含:open、print、quit,通常由系统自动处理,很少手写 handler。
5、kAEMiscStandards:杂项标准事件,如:激活、选择、显示UI,实际开发中极少使用。
6、自定义Event Class:自定义私有事件:
let myClass = AEEventClass(0x4D594150) // 'MYAP'
let myID = AEEventID(0x444F5441) // 'DOTA'
用于:旧式App私有通信,自动化工具,现代更推荐XPC。
总结
Event Class 是 Apple Events 中用于划分“事件功能域”的 4 字节标识,与 Event ID 一起构成 macOS 进程间通信的指令地址。
