如何确定一个特定的应用程序何时处于活动状态和非活动状态?
例如,用户打开chrome,然后切换到textmate,然后切换回chrome。
我希望能够跟踪活动应用程序的时间和内容
在NSApplicationDelegate中你有
管理活动状态—仅适用于您自己的应用程序!
- applicationWillBecomeActive:
- applicationDidBecomeActive:
- applicationWillResignActive:
- applicationDidResignActive:
那些实际上是由你自己的NSApplication对象发送的nsnotification
一个通知是所有的应用程序!
- NSWorkspaceDidActivateApplicationNotification
当前活动的应用程序:
NSRunningApplication * frontmost;
frontmost = [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"active == YES"]][0];
你可以得到一个通知,每次一个新的应用程序被激活,像这样:
_myObserver = [[[NSWorkspace sharedWorkspace] notificationCenter] addObserverForName:NSWorkspaceDidActivateApplicationNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
NSLog(@"New application: %@", [[note userInfo] objectForKey:NSWorkspaceApplicationKey]);
}];