2014-10-18 2 views
9

OS X 용 Finder 동기화 확장 프로그램에서 백그라운드 XPC 서비스를 사용하려고합니다.파인더 동기화 확장과 XPC 간 통신

주 앱에서 시작할 수 있으며 XPC를 실행하고 올바르게 실행해도 Finder 동기화에서 액세스하려고하면 아무런 반응이 없습니다. 파인더 동기화와 XPC 모두 자체 번들이므로 그 이유가 될 수 있습니다. 내가 원하는 것은 파인더 싱크가 XPC와 파일의 상태에 대해 이야기하고 주 앱이 파인더 싱크와 XPC와 대화 할 폴더 목록에 대해 이야기하는 것입니다.

아무도 이걸 가지고 행운이 있었나요? 온 디맨드 백그라운드 서비스를위한 더 좋은 방법이 있습니까? 두 개의 XPC 서비스 사이에서 대화 할 수 있습니까?

답변

3

일부 Apple 엔지니어와 협력하여 문제가 있음을 깨닫고 더 나은 해결책이 마련 될 때까지 LoginItem을 사용하도록 제안했습니다.

그래서 일종의 XPC 서비스로 끊임없이 실행됩니다. 확장 및 호스트 응용 프로그램 모두에서 XPC 통신이 가능합니다.

가장 이상적인 솔루션은 아니지만 작동합니다. 이 작업을 수행하는 방법에 대한 예제는 XPC 로그인 항목을 다루는 사과 샘플 프로젝트를 권장합니다.

+0

더 자세히 설명해 주시겠습니까? 별도의 응용 프로그램을 XPC 서비스로 사용하고 있습니까? 아니면 기본 응용 프로그램에서 함께 묶으시겠습니까? NSXPCConnection이 Finder 플러그인에서 주 앱 내 번들로 제공되는 내 XPC 서비스에 대해 열리지 않는 문제가 있습니다. –

1

컨테이너 응용 프로그램과 확장 프로그램간에 직접 통신 할 수는 없지만 공유 리소스를 사용하여 간접적으로 수행 할 수 있습니다. 나는 네가 한 일을 완전히 잘못했다. 저장하지 않을 경우 파일 상태를 데이터베이스에 저장하고 컨테이너 응용 프로그램과 확장 사이에서 데이터베이스를 공유하는 것이 좋겠습니다. 필자는 XPCService를 Apple의 FinderSync Doc에 그대로 사용하는 이유는 무엇입니까? 공유 데이터베이스에 대한 자세한 내용은

을 (실제로 성능 이유로, 액세스, 확장에와 XPCService에서 공유 데이터베이스를 NSXPCService 만들기) :이 당신을 도와줍니다

http://blog.sam-oakley.co.uk/post/92323630293/sharing-core-data-between-app-and-extension-in-ios-8

희망

+0

공유 데이터베이스는 여전히 FinderSyncExtension을 수행하는 데 권장되는 방법입니까 <-> MainApp 통신입니까? 데이터베이스가 업데이트되면 Finder에 자체를 새로 고쳐야한다는 것을 Finder에 알리는 방법은 무엇입니까? – mixtly87

+0

저는 AppleScript를 강력히 추천합니다. 나는 애플 문서를 맹목적으로 따라 다니고 AppleScript를 완전히 잊었다. AppleScript를 사용하여 통신하고 있습니다. 공유 컨테이너를 사용할 필요가 없습니다. AppleScript 덕분에 :) –

1

CFMessagePorts을 통해 MainApp < -> FinderSyncExtension 통신을 구현했습니다. 자세한 내용은 this answer을 참조하십시오.