0

NSWorkspaceDidActivateApplicationNotification 및 NSWorkspaceDidLaunchApplicationNotification 알림을 모두 사용하여 사용자가 어떤 응용 프로그램과 상호 작용하는지 알 수 있습니다.NSWorkspaceDidActivateApplicationNotification이 응용 프로그램을 사용할 준비가되기 전에 호출되었습니다. (시작됨)

문제는 응용 프로그램을 열어서 아직 실행중인 경우 먼저 활성화 알림을 받고 곧 시작 알림을 받게된다는 것입니다.

활성화 방법 내에서 앱이 아직 시작 중이며 아직 사용할 준비가되지 않았다는 것을 알 수있는 방법이 있습니까? (여전히 독에서 튀는)

apple에 의한 ichat 샘플 프로젝트는 위의 방법을 사용하지 않고 대신 알림을 수신하기 위해 대기합니다. 그런 다음 kAXApplicationActivatedNotification을 사용하여 응용 프로그램에 AXObserver를 추가합니다. 이것이 바람직한 방법입니까? (또한 이미로드 된 모든 응용 프로그램에 관찰자를 추가하는 NSRunningApplications).

적은 메모리를 많이 사용한다고 생각하기 때문에 단순한 NSNotifications를 계속 사용하고 싶습니다. (로드 된 모든 앱마다 관찰자를 둘 필요가 없습니다.)

답변

3

검사는 NSWorkspaceDidActivateApplicationNotification

NSRunningApplication *app = [note.userInfo objectForKey:NSWorkspaceApplicationKey]; 
if(app.isFinishedLaunching) 
    NSLog(@"up"); 
+0

감사의 사용자 정보 전달 된 NSRunningApplication 객체는,이 잘 작동합니다. 이것이 애플이 ichat status application sample (http://developer.apple.com/library/mac/#samplecode/iChatStatusFromApplication/Introduction/Intro.html)에서 애플이했던 방식보다 더 나은 방법이라고 생각합니까? 알림 속도에는 차이가 있습니까? 또한, 탄소 응용 프로그램은 어떻습니까? 또한 NSNotifications를 보냅니 까? – Wesley

관련 문제