2015-01-12 44 views
0

我完全不知道从哪里开始。我想在Objective-C中构建一个与iTunes交互的OS X应用程序,即添加歌曲,电影,播放或暂停等。在OS X应用程序上与iTunes进行互动

现在,我知道在Windows中,我可以使用COM要做到这一点,我已经尝试过了。在OS X中有类似的东西吗?应用程序通常如何相互通信或他们如何公开其API?

我应该阅读什么协议?

+0

AppleScript应该在这里帮助 – Volker

+0

http://www.liquidx.net/eyetunes/是我与iTunes保持良好关系的首选 - 它直接处理AppleEvents的所有事情。这可能有点过时,但我敢打赌你找不到更快的东西! –

+1

@零:有趣的链接。 EyeTunes似乎早于Scripting Bridge框架,它基本上做了同样的事情(将Apple事件IPC包装在类似OOP的界面中)。对于新项目,我推荐使用Scripting Bridge;它几乎肯定会一样快,并且对于某些用途可能会更快,并且它会让您访问完整的当前iTunes脚本字典。 –

回答

2

您在OS X上寻找的是脚本或“自动化”和AppleScript。这里有一些简短的故事,有一些链接可以帮助你:

主要应用程序(当然也有iTunes,我有一些经验)公开了对象,方法和属性等的“脚本字典”,它们可以通过系统脚本框架。

这通常由AppleScript环境中的脚本完成。 AppleScript是一种语言,它针对OS X上的底层脚本基础架构。您可以wade into that here。还有其他方法可以与脚本基础结构进行交流,但您应该了解AppleScript语言是否是唯一的“一流”方式,因此应用程序响应方式的语义倾向于与AppleScript与他们谈话的方式是不可分割的。 (更多内容)

查看标准(虽然简约)用户级别编辑器中的“脚本编辑器”应用程序(已安装在Mac上,只需打开Spotlight),并尝试使用File->Open Dictionary命令检查字典的一些应用程序(如iTunes)。

如果你想谈论到iTunes从您的应用程序,不过,并没有从自己的一次性脚本,你有几个选项(这些都是很容易混淆,但实际上是相当独立的):

  1. ObjC Scripting Bridge。这是通过使它看起来像本机ObjC对象集来与应用程序交谈的一种方式。一旦你了解它的怪癖(概念图不完全准确),我自己发现这是以一种复杂的方式与iTunes进行交互的最方便的方式,但这里的观点会有所不同。
  2. AppleScriptObjC是一种技术,可让您直接在AppleScript中实际编写Cocoa应用程序的整个部分(类)。我认为这对于想要将自己的功能包装在一流的Mac应用程序中的熟练的AppleScript程序员更有用,而不是为了描述您所描述的内容。
  3. 您可以使用NSAppleScript类从Cocoa内部执行AppleScript的块。如果你想用iTunes做的事情有一个相当有限的表面积,并且使用AppleScript更好或更容易表达,这很有用。

我不知道你在找什么,在复杂的iTunes互动,但这里有一些重要的事情要知道当你上手:

  • 的AppleScript可以是语言的野兽如果你已经是一位经验丰富的程序员,那么就去处理吧。它具有一些令人惊讶的表达能力,但它非常古老,非常适合非程序员(因此程序员期待清晰的语法和熟悉的语义)。它的记录很差,周围社区相当有限。它继续徘徊,但要小心,苹果不会给它太多的爱。
  • 如果您想做任何不平凡的事情,即使来自Scripting Bridge,也要先学习AppleScript。语义将是相同的,如果你不知道它们如何映射到AppleScript,那么从Scripting Bridge方面来说,它们将毫无意义。同样,AppleScript仍然是通过脚本界面与应用对话的唯一一流方式。我发现深夜的Script Debugger产品在学习时通过AppleScript进行追踪是非常宝贵的。
  • 重要提示,您将了解:AppleScript(尤其是脚本桥)提供了一个面向对象的应用程序视图:对象,方法,属性。但这是一个方便和诱人的小说;这是一个抽象,位于实际的IPC机制之上,称为Apple Events。特别是如果你来自COM这样的东西,你越快理解脚本是一个事件+查询系统(而不是一个OOP接口)的方式,你就会越快地知道如何有效地解决它。
  • 对脚本的应用程序支持不一致,不完整,文档不完整和错误。我可以在iTunes中担保,这可能比大多数人都好。准备好迎接和解决各种令人惊讶的iTunes行为。随你问他们,随时提问。有少数非常博学的人潜伏在这里。
+0

谢谢你的完整答案!基本上,这将是一个Cocoa应用程序,所以我可能会使用Scripting Bridge或NSAppleScript!不相关,但是,你知道苹果是否正在计划更新或删除更强大的AppleScript吗? – CoachNono

+1

@ CoachNono。别客气。我刚刚完成了一个复杂的iTunes集成,所以这在我心中是全新的。 Yosemite刚刚推出了“用于自动化的Javascript”,它基本上是用于脚本框架的JS绑定。这看起来非常有希望,但是它没有足够的文档记录和直接打破尤其是与iTunes(不要打扰,它会打破你的心)。我不知道是否有更长期的计划,但我希望如此!它是一个强大的想法,当它的工作。祝你好运! –

2

目前,COM的内置Mac OS X等价物是Apple事件。实现它们的最简单方法是使用AppleScript,但不一定要;你可以直接形成原始的Apple事件。

碰巧你已经选择了一个应用程序(iTunes)可沟通 - 使用Apple事件/ AppleScript。

相关问题