你可以在插件中运行XPC服务吗? (例如,打印对话扩展插件)

时间:2013-04-08 07:43:22

标签: macos cocoa plugins sandbox xpc

我正在创建一个Print Dialog Extension(PDE)插件。 当用户从不同的应用程序打印时,将调用并显示此插件, 例如TextEdit,Preview,Xcode等。请注意,插件运行在调用Print Plugin的应用程序之上(例如,TextEdit)。

在插件中,我需要运行XPC服务。我需要一个XPC服务,因为主应用程序上的权利可能不足以满足我的需求,例如:我需要连接到网络,TextEdit没有网络连接所需的权利。

问题是,我无法创建XPC连接。处理程序始终使用XPC_ERROR_CONNECTION_INVALID触发。

1。)这是因为PDE插件不在主捆绑/主应用程序内,例如文字编辑?
2.)如果是,我怎样才能在PDE插件中运行XPC服务? 3.)如果否,那么为什么我不能成功创建XPC连接?

1 个答案:

答案 0 :(得分:1)

我没有设法让XPC在PDE插件中工作。

XPC包必须位于主应用程序包的Contents / XPCServices目录中,但在我的情况下,主应用程序包会有所不同 - 取决于打开PDE插件的应用程序,例如: TextEdit或预览。将XPC捆绑包放在PDE捆绑包中不起作用。

由于这个限制,我重新设计了PDE插件内的操作流程。它现在调用外部应用程序(独立)来执行需要网络连接的事情。