【发布时间】:2020-07-16 00:32:53
【问题描述】:
我想在我的应用扩展中使用进程间通信来在扩展对应用组的UserDefaults 数据库进行更改时通知其包含的应用。目前,似乎没有办法在UserDefaults 数据库被不同的进程更新时得到通知,所以我假设我必须在扩展程序和包含的应用程序之间建立 IPC。 According to Apple's documentation,这似乎可以使用多种不同的方法:
组内的应用程序可以使用 IPC 机制(包括 Mach IPC、POSIX 信号量和共享内存以及 UNIX 域套接字)与组中的其他成员通信。在 macOS 中,使用应用组来启用两个沙盒应用之间或沙盒应用与非沙盒应用之间的 IPC 通信。
我做了一些研究,似乎这些技术中的大多数都是请求驱动的,而不是异步的。有没有使用这些技术的好方法,以便我的扩展程序可以在更改应用程序组的UserDefaults 时通知我的应用程序?
附加信息:
- 我正在构建的扩展是广播上传扩展。
-
UserDefaults.didChangeNotification不能跨进程工作,因此不适用于此目的。 - Swift 中的解决方案是理想的,但 Objective-C 也可以。
【问题讨论】:
标签: ios swift ipc ios-extensions ios-app-group