¿Cómo obtengo controles de audio en la pantalla de locking / Centro de control de AVAudioPlayer en Swift?

Nuevo en el desarrollo de iOS, así que aquí va. Tengo una aplicación que está reproduciendo audio: estoy usando AVAudioPlayer para cargar files individuales por nombre en los activos de la aplicación. No quiero consultar la biblioteca del usuario, solo los files proporcionados. Funciona muy bien, pero, quiero que el usuario pueda pausar y ajustar el volumen desde la pantalla de locking.

 func initAudioPlayer(file:String, type:String){ let path = NSBundle.mainBundle().pathForResource(file, ofType: type)! let url = NSURL(fileURLWithPath: path) let audioShouldPlay = audioPlaying() do{ try AVAudioSession.shanetworkingInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.shanetworkingInstance().setActive(true) let audioPlayer:AVAudioPlayer = try AVAudioPlayer(contentsOfURL: url) audioPlayer.volume = slider.value audioPlayer.numberOfLoops = -1 audioPlayer.prepareToPlay() if(audioShouldPlay){ audioPlayer.play() // let mpic = MPNowPlayingInfoCenter.defaultCenter() // mpic.nowPlayingInfo = [MPMediaItemPropertyTitle:"title", MPMediaItemPropertyArtist:"artist"] } } catch{} } 

Mi uso de AVAudioSession y MPNowPlayingInfoCenter fueron solo experimentos de la lectura de otras publicaciones relacionadas.

El modo de background está habilitado para audio en el file Plist de mi aplicación

Debe invocar beginReceivingRemoteControlEvents () de lo contrario no funcionará en el dispositivo real.

Swift 3.1

 UIApplication.shanetworking.beginReceivingRemoteControlEvents() 

Si desea especificar acciones personalizadas para MPRemoteCommandCenter:

 let commandCenter = MPRemoteCommandCenter.shanetworking() commandCenter.nextTrackCommand.isEnabled = true commandCenter.nextTrackCommand.addTarget(self, action:#selector(nextTrackCommandSelector)) 
 func myplayer(file:String, type:String){ let path = NSBundle.mainBundle().pathForResource(file, ofType: type)! let url = NSURL(fileURLWithPath: path) let audioShouldPlay = audioPlaying() do{ try AVAudioSession.shanetworkingInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.shanetworkingInstance().setActive(true) let audioPlayer:AVAudioPlayer = try AVAudioPlayer(contentsOfURL: url) audioPlayer.volume = slider.value audioPlayer.numberOfLoops = -1 audioPlayer.prepareToPlay() if(audioShouldPlay){ audioPlayer.play() // let mpic = MPNowPlayingInfoCenter.defaultCenter() // mpic.nowPlayingInfo = [MPMediaItemPropertyTitle:"title", MPMediaItemPropertyArtist:"artist"] } } catch{} } 

Ya hay controles de audio en la pantalla de locking (la interfaz de "control remoto"). Si desea que controlen el audio de su aplicación, debe hacer que su aplicación sea el objective del control remoto , tal como se describe en la documentation de Apple .