New to iOS development, so here goes. I have an app that is playing audio - I'm using AVAudioPlayer
to load single files by name in the app's assets. I don't want to query the user's library, only the files provided. Works great, but, I want the user to be able to pause and adjust volume from the lock screen.
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.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().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{}
}
My use of AVAudioSession
and MPNowPlayingInfoCenter
were just experiments from reading other related posts.
Background mode is enabled for audio in my app's plist file
You need to invoke beginReceivingRemoteControlEvents() otherwise it will not work on the actual device.
Swift 3.1
If you would like to specify custom actions for the MPRemoteCommandCenter:
I Have this problem. You need only
To implement this functionality, use the Media Player framework’s MPRemoteCommandCenter and MPNowPlayingInfoCenter classes with AVPlayer.
Configure the Remote Command Handlers
Defines a variety of commands in the form of MPRemoteCommand objects to which you can attach custom event handlers to control playback in your app.
Provide Display Metadata
Provide a dictionary of metadata using the keys defined by MPMediaItem and MPNowPlayingInfoCenter and set that dictionary on the default instance of MPNowPlayingInfoCenter.
For more information refer Apples official Documentation
There are already audio controls on the lock screen (the "remote control" interface). If you want them to control your app's audio, you need to make your app the remote control target, as described in Apple's documentation.