我需要在系统扩展和应用程序之间通信数据/消息(这不是系统扩展的容器应用程序)。
推荐哪种IPC机制? 套接字通信同样好吗?
嗯,没有太多文档,所以很难说有什么推荐的机制来与系统扩展进行通信。
Apple 在他们的示例中使用 XPC,如果您可以在应用程序中保留与系统扩展相同的应用程序组(根据文档)(这不是容器应用程序,这是可以的),您也可以使用它。
套接字也可以工作,但您需要知道,所有系统扩展都是沙盒的,并且沙盒配置文件会阻止对大部分文件系统(但不是全部)的读写访问。
因此,要建立套接字连接,您可能需要做一些研究,哪里是保存用于双向通信的套接字文件的好地方。
我推荐使用XPC。它快速且可靠,更重要的是,您可以验证是否只允许您拥有的二进制文件进行连接。使用
audit_token
和在 shouldAcceptNewConnection()
期间检查代码签名的组合。您还可以使用自己的协议(JSON、protobuf 等),而不是依赖 Apple Coding 接口。
一些资源: