2015-01-12 2 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

@Zero : 흥미로운 링크. EyeTunes는 Scripting Bridge 프레임 워크보다 앞선 것처럼 보입니다. 이는 기본적으로 동일한 작업을 수행합니다 (Apple Event IPC를 OOP와 유사한 인터페이스로 랩핑 함). 새 프로젝트의 경우 스크립팅 브리지를 대신 사용하는 것이 좋습니다. 거의 확실하게 빠를 것이며, 어쩌면 더 빨리 사용하게 될 것이며, 현재의 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를 사용하여 더 쉽고 쉽게 표현할 수 있다면 유용합니다.

난 당신이 시작하기로 알아야 할 중요한 것들을 아이튠즈의 상호 작용에 대한보고 있지만, 여기하는지 복잡성 모른다 :

  • 애플 스크립트가 언어의 짐승이 될 수 있습니다 이미 숙련 된 프로그래머라면 그립에 도전하십시오. 그것은 놀랄만 한 표현력이 가능하지만 프로그래머가 아닌 사람들을 위해 오래되고 무미건조하며 (따라서 명확한 문법과 익숙한 의미를 기대하는 프로그래머에게는 혼란 스럽습니다). 그 주변에 상당히 한정된 공동체가있는 것으로 잘 알려져 있지 않습니다. 그것은 계속해서 절뚝 거리지만, 애플이 많은 사랑을주지는 않는다는 것을 조심해야한다.
  • Scripting Bridge에서도 중요한 작업을 수행하려면 AppleScript를 먼저 배우십시오. 이 의미는 AppleScript로 매핑하는 방법을 이해하지 못하는 경우 스크립팅 브리지 측에서 동일하게 적용됩니다. 다시 말하지만, AppleScript는 스크립트 인터페이스를 통해 앱과 이야기하는 유일한 일류 방식입니다. Late Night의 Script Debugger 제품은 학습하면서 AppleScript를 통해 매우 중요합니다.
  • 배워야 할 중요한 팁 : AppleScript (특히 Scripting Bridge)는 객체 지향적 인 응용 프로그램, 즉 객체, 메소드, 속성보기를 제공합니다. 그러나 이것은 편리하고 매혹적인 소설이다. 이는 Apple Events라고 불리는 실제 IPC 메커니즘 위에 놓인 추상화입니다. 특히 COM과 같은 것에서 오는 경우 스크립팅이 실제로 이벤트 + 쿼리 시스템 (OOP 인터페이스가 아닌) 인 방법을 더 빨리 이해할수록 효율적으로 처리하는 방법을 빨리 파악할 수 있습니다.
  • 스크립팅에 대한 응용 프로그램 지원이 일관성이없고 불완전하며 문서화가 제대로되어 있지 않고 버그가 있습니다. 나는 아이튠즈에서이를 보장 할 수있다. 모든 종류의 놀라운 iTunes 동작을 치고 해결할 준비를하십시오. 당신이 그 (것)들에 얻는 때대로 SO에 관해서 질문하게 자유롭게 느끼십시오; 여기에 숨어있는 아주 잘 알고있는 소수의 사람들이 있습니다.
+0

답장을 보내 주셔서 감사합니다. 기본적으로 이것은 코코아 응용 프로그램이 될 것이므로 Scripting Bridge 또는 NSAppleScript와 함께 갈 것입니다! 관련이 없지만, 애플이 뭔가를 강하게하기 위해 애플 스크립트를 업데이트하거나 삭제할 계획이 있는지 아십니까? – CoachNono

+1

@ 코치 노노. 천만에요. 방금 복잡한 iTunes 통합을 마쳤으므로이 모든 것이 내 마음 속에 신선합니다. 요세미티는 기본적으로 스크립팅 프레임 워크 용 JS 바인딩 인 "자동화 용 Javascript"를 도입했습니다. 이것은 매우 유망한 것처럼 보였지만, iTunes와 함께 제대로 문서화되지 않았고 곧바로 깨진 것입니다 (걱정하지 마시고, 마음을 아프게 할 것입니다). 더 이상 장기 계획이 있는지 모르겠지만 그렇게되기를 바랍니다! 그것이 효과가있을 때 그것은 강력한 생각입니다. 행운을 빕니다! –

2

현재 COM의 내장 Mac OS X 상당 버전은 입니다. Apple 이벤트는입니다. 가장 간단한 방법은 AppleScript로 구현하는 것이지만 반드시 그렇게 할 필요는 없습니다. 원시 Apple 이벤트를 직접 구성 할 수 있습니다.

Apple 이벤트/AppleScript를 사용하여 매우 인 응용 프로그램 (iTunes)을 전달한 경우가 발생합니다.