我的平台包含基于混合C++/objective代码的系统宽守护进程,该代码由launchd
根据plist文件操作,配置适当,驻留在/Library/LaunchDaemons/
中。
另一方面,它包含使用故事板构建的基于UI的应用程序,该应用程序从后台运行,定义为LaunchAgent
(这意味着它也由launchd
使用/Library/LaunchAgents/
中的plist文件操作)
现在,我希望在它们之间建立一个uni定向连接,以便Daemon可以发送消息,由UI应用程序显示。消息可以包含字符串/数字或任何其他可显示的数据。
我已经使用XPC连接检查了这个选项,并将NSXPCConnection
添加到我的守护进程中,该守护进程与在UI端使用NSXPCListener
实现的服务器共享一个专用协议。
我很乐意得到关于我的设计的评论和建议,特别是在以下几个方面
1. Should I implement the UI as launchAgent
(I need to support multi-users, meaning that the daemon can send
different messages to each UI instance per user)
。
2. should I consider using dedicated `XPC service`.
Seems like Xcode has option to create XPC service,
but I don't know how should I "attach" the UI code inside ...
。
3. is it possible to have XPC client which runs objective-c
code while the XPC listener will run on swift code ?
谢谢
发布于 2018-01-21 07:20:45
现在,我希望在它们之间建立一个uni定向连接,以便Daemon可以发送消息,由UI应用程序显示。
这对我没用。根进程无法初始化与用户进程的通信。但反之亦然:如果连接是由UI启动的(在UI中实例化NSXPCConnection,在Daemon中实例化侦听器)。
发布于 2018-01-12 10:10:43
我认为你应该阅读苹果的Daemons和服务编程指南:ref/doc/uid/10000172i-SW1-SW1
XPC服务是私有的,并且只对包含它的主应用程序可用。
https://stackoverflow.com/questions/48003207
复制相似问题