阶段1
- Step 1: 首先创建两个工程
一个主工程**MainPrj: 发送消息 (实际上是设置value到UserDefaults)
一个Hub工程: 接受消息 - Step 2: 为两个添加相同的group id
- Step 2: 为两个工程创建对象(用同一个group id):
let groupID = "group.victor.acdsee"
let gUserDefaults = UserDefaults.init(suiteName: groupID)
- Step 3: 在Hub 工程中监听 gUserDefaults的改变(KVO)
原理:Apple 的 group 可以是多个进程共享UserDefaults文件, UserDefaults相当于一个便捷的数据库。
阶段2
将Hub工程改为后台进程(不显示主窗口,在屏幕右上角显示APP icon)
方法参见:Creating Status Bar Apps on macOS in Swift