2015-01-12 45 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。

相關問題