当我从Xcode启动目标时,XPC通信正常工作。但是,当我通过双击图标手动启动服务和客户端应用程序时,连接失效消息显示出来。它们在xcode内部工作正常,而不是从外部工作吗?.Xcode在这里做了什么魔术来使通信工作
答案 0 :(得分:0)
对于所有使用xpc_connection_create_mach_service
遇到相同问题的人们:XPC通过大量已发布的产品工作;当我们使用xCode调试应用程序时,它会中介应用程序并启动连接,但是如果没有xCode,我们需要自己做。
要使它活跃起来,应该使用启动plist文件通过启动来启动它。
有这样的plist here的示例,但这还不够。
诀窍是MachServices
键,它看起来像:
<key>MachServices</key>
<dict>
<key>com.server.bundle-id</key>
<true/>
</dict>
这是我们创建Mach服务的方式,所以我想我们的XPC连接下面可能有一些Mach端口。