2011-03-12 3 views
1

특정 도시의 온도 기록 차트를 보여주는 Mac OS X 응용 프로그램을 작성하고 있습니다. 기온은 웹 서비스에서 가져옵니다."도우미 응용 프로그램"과 GUI 응용 프로그램을 서로 어떻게 통신 할 수 있습니까?

응용 프로그램이 실행되지 않아도 내부 데이터베이스가 매 시간 한 번 업데이트되도록하고 싶습니다.

편리한 방법이 있습니까?

"도우미 응용 프로그램"즉 LSUIElement 플래그 + NSStatusBar 덕분에 백그라운드에서 실행되는 앱을 만들 가능성을 생각했습니다. 제 경우에는 완벽하다고 생각됩니다. 메뉴 막대의 오른쪽에 나타나지만 Dock에는 나타나지 않습니다. 이 도우미 응용 프로그램은 웹 서비스를 한 시간에 한 번씩 쿼리하고 온도 및 타임 스탬프를 데이터베이스 (코어 데이터 포함)에 기록합니다.

"헬퍼 앱"외에도 데이터베이스에 저장된 데이터 (코어 데이터 포함)를 기반으로 온도 기록 차트를 표시하는 사용자 인터페이스가있는 일반 응용 프로그램 인 "보고서 앱"이 있습니다.

그러나 문제는 두 앱이 어떻게 통신 할 수 있는지 모르겠다 : 그들은 하나의 공유 데이터베이스를 사용해야 만합니까? 핵심 데이터를 사용하여이를 수행 할 수 있습니까?

답변

2

핵심 데이터는 여러 응용 프로그램에서 같은 저장소에 동시 액세스를 지원하지 않습니다.

메뉴 막대가 없어도 괜찮습니까? (UI의 양은 ​​얼마입니까?) 제 생각에는 LSUIElement으로 설정된 모든 응용 프로그램을 만드는 것이 좋습니다. 사용자가 집중하고 상호 작용할 수있는 창을 열 수 있습니다.

+1

동일한 관리 객체 모델을 사용하는 경우 여러 응용 프로그램이 동시에 동일한 저장소에 액세스 할 수 있습니다. 그러나 충돌 문제 (병합 정책 등)를 처리해야하는데, 이는 어려울 수 있습니다. 그렇게 말하면, 가장 간단한 해결책은 보고서 애플리케이션을 하나의'LSUIElement' 애플리케이션으로 바꾸고 로그인시 실행되도록 설정하는 것입니다. @Dev, 도우미 응용 프로그램이 있어야하는 경우, 나는 당신이 찾고있는 것이라고 생각합니다 [launchd 데몬] (http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/ 기사/LaunchOnDemandDaemons.html). – David

+0

Nicholas and Johnny 대단히 감사합니다. 귀하의 답변은 매우 유용합니다. – Dev

관련 문제