Как определить, когда пользователь открывает Центр уведомлений OS X?

165
19

Как определить, когда пользователь открывает Центр уведомлений о горном льве OS X?


Есть ли NSNotification (ugh, очень похожий термин для другой вещи), который я могу наблюдать?

спросил(а) 2021-01-19T16:19:30+03:00 9 месяцев назад
1
Решение
103

Я не знаю какого-либо официально зарегистрированного решения или уведомления (дайте мне знать!), но это оказалось работать (по крайней мере, на OS X 10.10), когда я его протестировал, если мое приложение было в на переднем плане/было самое раннее окно, которое я считаю.


Добавьте свой объект в качестве наблюдателя:


[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCenterOpened:) name:@"com.apple.HIToolbox.beginMenuTrackingNotification" object:nil];

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCenterClosed:) name:@"com.apple.HIToolbox.endMenuTrackingNotification" object:nil];


Добавьте к вашему объекту методы, аналогичные приведенным ниже, чтобы убедиться в правильности номера ToolboxMessageEventData (4927), например:

- (void)notificationCenterOpened:(NSNotification*)notification {
if ([notification.userInfo[@"ToolboxMessageEventData"] isEqual: @4927]) {
NSLog(@"Notification center opened");
}
}

- (void)notificationCenterClosed:(NSNotification*)notification {
if ([notification.userInfo[@"ToolboxMessageEventData"] isEqual: @4927]) {
NSLog(@"Notification center closed");
}
}


Сообщите мне, если это работает или не работает для вас.


Nevermind - после перезапуска/выхода из системы + войдите в систему, появляется ToolboxMessageEventData.

ответил(а) 2021-01-19T16:19:30+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема