从外部App调用嵌入式XPCService

时间:2018-05-17 07:11:03

标签: macos

我有两个独立的应用程序(可可),一个是主要的,另一个是奴隶。

主应用程序应用程序是嵌入XPCService,它在打开应用程序时正确启动。到目前为止,没有问题与该服务连接和交换数据(我也在活动监视器中看到这个XPCService)。

但我希望其他从属应用程序在主要应用程序启动之后连接并将数据发送到该XPC服务(然后再发送到主要的第一个应用程序)。 使用NSXPCConnection(使用initWithMachServiceName)和正确的服务包标识符不起作用:不调用NewConnection委托,因此从属应用程序永远不会到达服务。

我错过了什么?我想要的是NSXPCConnection可能吗? 是因为我需要以某种方式共享XPCService(在plist中)吗?在那种情况下,我该怎么办?

我找不到有关此排序连接的任何信息! 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  

"我有两个独立的应用程序"

Apple's Documentation for XPC中所述:

  

XPC服务是私有的,只能用于包含它的主应用程序。

为了安全起见,包含XPC帮助应用程序的应用程序会被签名,以确保只允许主应用程序调用其帮助程序。

但是,应该注意文档还说明了

  

连接是虚拟端点;它与服务二进制文件的实际实例是否正在运行无关。服务二进制文件按需启动。

     

连接也可以作为XPC消息中的一段数据发送。因此,您可以通过XPC传递连接,以允许一个服务与另一个服务进行通信(例如)。

虽然我在实践中没有看到这一点,但它确实意味着您可以启动从主应用程序到XPC帮助程序的连接,并将此连接发送给您的“奴隶”。应用