MPMusicPlayerController no publica notifications?

Estoy intentando usar MPMusicPlayerController para reproducir música, y también quiero recibir la notificación MPMusicPlayerControllerPlaybackStateDidChange . Configuro mi reproductor y el logging de notifications casi como la muestra (que funciona, BTW: recibe notifications correctamente):

 - (id) initWithPlaylist:(MPMediaPlaylist*)list { if (self = [super init]) { player = [MPMusicPlayerController applicationMusicPlayer]; [player retain]; NSLog(@"setting up player"); [plaayer setQueueWithItemCollection:list]; [player setShuffleMode:MPMusicShuffleModeOff]; [player setRepeatMode:MPMusicRepeatModeNone]; NSLog(@"registering MPMusicPlayerController Notifications"); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handle_itemChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handle_stateChanged:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:nil]; NSLog(@"turning on player notifications"); [player beginGeneratingPlaybackNotifications]; } } 

Tengo muchos bupkis. Los methods handle_itemChanged: y handle_stateChanged: están vacíos excepto por una instrucción NSLog para mostrar que han sido afectados, y nunca parece que reciban un golpe. Las instrucciones NSLog en initWithPlaylist: se imprimen en el logging como se esperaba. Lo anterior es solo un object comercial en mi aplicación. No es una vista o controller de vista.

¿Algunas ideas? Lo extraño es que la muestra AddMusic funciona bien para mí, y no puedo decir que estoy haciendo algo diferente con respecto al MPMusicPlayerController y sus notifications.

Actualización : agregué esta línea en el delegado de mi aplicación para ver la avalancha completa de notifications:

 [[NSNotificationCenter defaultCenter] addObserverForName:nil object:nil queue:nil usingBlock:^(NSNotification *n) { NSLog(@"notification: %@", n); }]; 

Veo que se imprimen todas las classs de notifications en la console, pero ninguna desde el controller del reproductor de medios.

Debe agregar otra línea arriba de estas líneas:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handle_itemChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:nil]; 

es decir:

 [myPlayer beginGeneratingPlaybackNotifications]; 

me funcionó

Finalmente, descubrí la respuesta: el jugador tiene que enviar posts en el hilo principal. Tiene algún sentido en retrospectiva, pero fue completamente no obvio hasta el momento en que me di count. Modifiqué el error que abrí para ser un error en la documentation porque nunca detecté dónde mencionaron que el jugador debe ser operado en el hilo principal.