2013-02-24 96 views
0

第一关内执行外部应用程序,让我清楚,我需要它简单(显然我要的是只是执行另一个应用程序)。从Cocoa应用程序

我需要:

  • 扩展我的主要应用与外部应用程序(“插件”的排序)功能
  • 这些外部插件必须从主应用程序分开(在条件的代码/实现)
  • 外部插件必须能够无缝集成到主应用程序
  • 外部应用程序应该而不是被用户看作是“外部”东西
  • 执行必须遵守App Store条款和SandBoxing指南。

(虽然这个想法在我的脑海不是100%清晰)

  • 主机应用程序启动
  • 外部应用程序有一个窗口(和它自己的功能)
  • 一旦执行了外部应用程序,它的窗口现在变成了主机应用程序的“表单”

我不知道我所描述的是甚至可行的。不过,我仍然需要听取您的意见。我已经做了很多关于此事的研究,尽管我将基于使外部脚本可扩展主机应用程序的基本概念(获得输入并提供一些输出 - 通过php,python,AppleScript,任何.. ),这并不包括“插件”具有自己的用户界面的情况。

那么,有什么想法? (一个例子或某些特定的参考点我将是理想的...)

+0

是关于OS X或iOS应用程序的问题吗? – 2013-02-24 16:00:14

+0

@MartinR OSX ... – 2013-02-24 16:24:02

+1

我假设你可以使用[Bundles](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Tasks/LoadingBundles.html)。加载后,它们将在主应用程序上下文中执行,因此可以使用UI。我不认为这是一个沙盒问题,因为所有的捆绑包都会被签名并包含在主应用程序包中,但我无法给出一个权威的答案。如果你想特权分离,看看“XPC服务”,但这些没有(据我所知)访问用户界面。 – 2013-02-24 16:46:01

回答

2

有你想要什么,解决什么新API:

的XPC服务API,libSystem中的一部分,提供了一个与Grand Central Dispatch(GCD)集成并启动的基本进程间通信轻量级机制。 XPC Services API允许您创建称为XPC服务的轻量级帮助工具,它们代表您的应用程序执行工作。

Daemons and Services Programming Guide

有一个在WWDC 2012 videos在这个相谈甚欢。

你所描述的很多事情确实是可能的 - 并不一定非常困难。然而,你的“例子”并不像你所说的那样完全一致。你希望第二个应用程序是分开的,但你不希望它看起来像“外部”;这些力量并不完全可以调和。出于显而易见的原因,你不可能做的是接管已经运行的应用程序。但是你可以开始你自己的过程。

通常的架构应该是有几个守护进程或服务为您执行任务,以及一个控制进程也处理所有事情的用户界面。如上所述,邮件以这种方式工作。

+0

哇。谢谢!我一定会看看它,并会回复你。 :-) – 2013-02-24 20:37:02