Получить уведомление с помощью NSDistributedNotificationCenter для iTunes об изменении информации о песне - PullRequest
4 голосов
/ 01 мая 2011

Я знаю, что вы можете использовать [iTunesDNC addObserver:self selector:@selector(updateInfo:) name:@"com.apple.iTunes.playerInfo" object:nil];, чтобы получать уведомления каждый раз, когда проигрыватель меняет песню / останавливает / играет / и т.д.Но мне нужно уведомление каждый раз, когда информация меняется в iTunes (например, название песни меняется, текст песни меняется, исполнитель и т. Д.)

Есть предложения?Я уверен, что мне просто нужно изменить com.apple.iTunes.playerInfo на что-то еще, что не playerInfo .

Я знаю, что это должно быть возможно, потому что есть приложение под названием SongGenie , которое изменит свою информацию, если вы отредактируете теги ID3 песни в iTunes или добавите текст песни.

Спасибо!

Ответы [ 2 ]

12 голосов
/ 01 мая 2011

Да, есть способ. Каждый раз, когда информация о песне изменяется, iTunes публикует уведомление « com.apple.iTunes.sourceSaved », чей словарь userInfo является библиотекой пользователя.

Вы можете проверить это и другие уведомления, которые iTunes отправляет, прослушивая каждое уведомление, размещенное в Центре распределенных уведомлений.

 [[NSDistributedNotificationCenter defaultCenter] addObserver:self
                                                  selector:@selector(allDistributedNotifications:)
                                                  name:nil
                                                  object:nil];

- (void) allDistributedNotifications:(NSNotification *)note 
{
    NSString *object = [note object];
    NSString *name = [note name];
    NSDictionary *userInfo = [note userInfo];
    NSLog(@"<%p>%s: object: %@ name: %@ userInfo: %@", self, __PRETTY_FUNCTION__, object, name, userInfo);
}
0 голосов
/ 04 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...