你可以在插件中运行 XPC 服务吗? (例如,打印对话框扩展插件)
Posted
技术标签:
【中文标题】你可以在插件中运行 XPC 服务吗? (例如,打印对话框扩展插件)【英文标题】:Can you run an XPC service inside a plugin? (e.g. a Print Dialog Extension plugin) 【发布时间】:2013-04-08 07:43:22 【问题描述】:我正在创建一个打印对话框扩展 (PDE) 插件。 当用户从不同的应用程序打印时调用并显示此插件, 例如TextEdit、Preview、Xcode 等。请注意,插件运行在调用打印插件的应用程序之上(例如,TextEdit)。
在插件内部,我需要运行 XPC 服务。我需要 XPC 服务,因为主应用程序上的权利可能不足以满足我的需求,例如我需要连接到网络,而 TextEdit 没有网络连接所需的权利。
问题是,我无法创建 XPC 连接。处理程序总是以 XPC_ERROR_CONNECTION_INVALID 触发。
1.) 这是因为 PDE 插件不在主包/主应用程序中,例如文字编辑? 2.) 如果是,我怎样才能在 PDE 插件中运行 XPC 服务? 3.) 如果没有,那为什么我不能成功创建 XPC 连接?
【问题讨论】:
我看到你几个月前问过这个问题,从那以后你有什么发现吗?你让它工作了吗? 请看我的回答。 【参考方案1】:我没有设法让 XPC 在 PDE 插件中工作。
XPC 包必须位于主应用程序包的 Contents/XPCServices 目录中,但在我的情况下,主应用程序包会有所不同 - 取决于打开 PDE 插件的应用程序,例如文本编辑或预览。将 XPC 包放入 PDE 包中不起作用。
由于这个限制,我重新设计了 PDE 插件内部的操作流程。它现在调用外部应用程序(独立)来执行需要网络连接的操作。
【讨论】:
以上是关于你可以在插件中运行 XPC 服务吗? (例如,打印对话框扩展插件)的主要内容,如果未能解决你的问题,请参考以下文章