Los botones Play / Pause next / Prev aparecen en gris en el centro de control

En mi aplicación, la reproducción se controla desde el centro de control. Cuando se está reproduciendo en AVPlayer (En este momento, los controles de reproducción funcionan bien desde el centro de control), estoy cargando una vista web con otra URL de transmisión.

Una vez que la transmisión se realiza de nuevo, estoy comenzando la reproducción desde AVPlayer. Después de esto, los controles de reproducción están apagados en el centro de control.

Estoy usando [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo para habilitar el control de reproducción en el centro de control.

¿Cuál sería el problema?

También me encontré con este problema al trabajar con una instancia de AVPlayer . Puede usar MPRemoteCommandCenter para configurar los controles en la pantalla de locking y el centro de command.

 MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter shanetworkingCommandCenter]; commandCenter.previousTrackCommand.enabled = YES; [commandCenter.previousTrackCommand addTarget:self action:@selector(previousTapped:)]; commandCenter.playCommand.enabled = YES; [commandCenter.playCommand addTarget:self action:@selector(playAudio)]; commandCenter.pauseCommand.enabled = YES; [commandCenter.pauseCommand addTarget:self action:@selector(pauseAudio)]; commandCenter.nextTrackCommand.enabled = YES; [commandCenter.nextTrackCommand addTarget:self action:@selector(nextTapped:)]; 

previousTapped: playAudio , pauseAudio y nextTapped son todos methods en mi controller de vista que llaman a los methods respectivos para controlar mi instancia de AVPlayer . Para habilitar una acción, debe establecer explícitamente enabled a YES y proporcionar un command con un target y un selector .

Si necesita desactivar una acción específica, debe establecer explícitamente la propiedad enabled en NO además de agregar un objective.

 commandCenter.previousTrackCommand.enabled = NO; [commandCenter.previousTrackCommand addTarget:self action:@selector(previousTapped:)]; 

Si no configura enabled el command, el elemento no aparecerá en absoluto en la pantalla de locking o en el centro de command.

Además, recuerde configurar su aplicación para la reproducción en segundo plano (agregue el valor de audio UIBackgroundModes a su file Info.plist), active el reproductor y verifique si hay errores:

 NSError *setCategoryError; NSError *setActiveError; [[AVAudioSession shanetworkingInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError]; [[AVAudioSession shanetworkingInstance] setActive:YES error:&setActiveError]; 

Google me trajo aquí porque tenía un problema con el centro de command al usar anuncios de video de AdMob, y un comentario sobre el OP referido a AdMob. Publicar aquí para cualquier otra persona que también tenga estos problemas.

Los anuncios de video de AdMob en iOS parecen utilizar MPRemoteCommandCenter por cualquier motivo. Esto puede interferir con el uso de su aplicación del centro de command. Esto es lo que se me ocurrió como una posible solución a esto: https://gist.github.com/ekilah/e74683291d3e7fafb947

La "key" de la solución consiste en reiniciar todos los shanetworkingCommandCenter de shanetworkingCommandCenter y el dictionary de información de MPNowPlayingInfoCenter después de que se MPNowPlayingInfoCenter un anuncio de AdMob y después de que se haya reproducido. La forma en que la solución consiste en restablecer todos los commands es less que bonita, pero esto es lo que se me ocurrió. Tal vez alguien tiene un método mejor?

Este enfoque también puede ayudar al OP. Restablecer las cosas entre diferentes usos puede ser una solución.

Finalmente solucioné este problema cargando la URL de mp3 usando AVplayer en lugar de cargarla en UIWebview . El time actual de reproducción , todo el time se puede recuperar de AVPlayer y también es posible search la reproducción con el control deslizante.