2015-07-26 6 views
0
static void registerForDriverLoadedNotification() 
{ 
    // Snipped code that works and is not related to issue 
} 

static void registerForApplicationChangedNotification() 
{ 
    NSLog(@"registerForApplicationChangedNotification!"); 
    NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 
    [center addObserverForName: nil object: nil queue: nil 
      usingBlock: ^(NSNotification* notification) { 
          NSLog(@"NOTIFICATION %@ -> %@", notification.name, 
                  notification.userInfo); 
         }]; 
} 


int main (int argc, const char* argv[]) { 
    registerForDriverLoadedNotification(); 
    registerForApplicationChangedNotification(); 

    CFRunLoopRun(); 

    return 0; 
} 

Приведенный выше код предназначен для процесса демона, он ожидает подключения USB-устройств, а затем загружает конфигурацию. Я хотел бы расширить эту функциональность, чтобы также обнаруживать, когда приложения запущены, и если присутствует конкретная конфигурация приложения, загрузите ее.Приложение Изменено Уведомления в CFRunLoop Daemon

Однако, похоже, я не получаю никаких уведомлений, кроме NSUserDefaultsDidChangeNotification.

Код выше в registerForApplicationChangedNotification первоначально мониторинга как NSWorkspaceDidActivateApplicationNotification и NSWorkspaceDidDeactivateApplicationNotification, но я изменил его на улов-все, чтобы я мог видеть то, что другие уведомления были опубликованы.

Независимо от того, что происходит, только уведомление NSUserDefaultsDidChangeNotification кажется полученным ... что не так с этим довольно простым кодом?

ответ

0

Глупые ошибки!

NSNotificationCenter* center = [NSNotificationCenter defaultCenter];

Должно быть:

NSNotificationCenter* center = [[NSWorkspace sharedWorkspace] notificationCenter]