Objective-C Mac OS X Распределенные уведомления iTunes - PullRequest
4 голосов
/ 03 февраля 2011

Мне нужна небольшая помощь, в настоящее время у меня есть метод; updateTrackInfo в моем приложении Mac OS X, которое получает имя исполнителя, название трека и продолжительность трека, который в данный момент воспроизводится в iTunes

Однако я хочу, чтобы приложение прослушивало распространенное уведомление iTunes; com.apple.iTunes.playerInfo затем вызывайте метод updateTrackInfo при каждом распространении уведомления iTunes. Пожалуйста, кто-нибудь может мне помочь, о чем мне нужно написать как в заголовке, так и в файле реализации.

Спасибо, Сами.

Ответы [ 2 ]

13 голосов
/ 03 февраля 2011

Вы ищете -[NSDistributedNotificationCenter addObserver:selector:name:object:]:

NSDistributedNotificationCenter *dnc = [NSDistributedNotificationCenter defaultCenter];
[dnc addObserver:self selector:@selector(updateTrackInfo:) name:@"com.apple.iTunes.playerInfo" object:nil];

В другом месте того же класса ...

- (void) updateTrackInfo:(NSNotification *)notification {
  NSDictionary *information = [notification userInfo];
  NSLog(@"track information: %@", information);
}

Он даже дает вам целую кучу информации о треке в уведомлении. Разве это не хорошо?

3 голосов
/ 03 февраля 2011

Спасибо за вашу помощь, вы помогли мне исправить мой код, у меня было написано:

- (id) init {
self = [super init];
if (!self) return nil;
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(receiveNotification:) 
                                             name:@"com.apple.iTunes.playerInfo"
                                           object:nil];
return self;}

- (void) receiveNotification:(NSNotification *) notification {
if ([@"com.apple.iTunes.playerInfo" isEqualToString:@"com.apple.iTunes.playerInfo"]) {
    NSLog (@"Successfully received the test notification!");
}}

Но он использовал NSNotificationCenter вместо NSDistributedNotificationCenter. Вот где я ошибался.

Спасибо, Сами.

...