ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel
  • »
  • Technology»
  • Communications»
  • Smartphones»
  • iPhone

 iOS - Play a music or sound with AVAudioPlayer in Swift

Updated on October 12, 2017

Wanting to know how to play background music files and sounds with AVAudioPlayer property (from AVFoundation framework) in Swift? Then you've got to the right place.

We’ve setup a sample project that looks like this:

XCode sample project
XCode sample project

Ok so let’s start by adding AVFoundation into Linked Frameworks and Libraries section, in the XCode’s General tab. Click on the plus sign and start typing the name of the needed framework:

Next, you have to import it on the top of our .swift file, in order to make our app able to use it:

import AVFoundation

Now you have to create an instance of AVAudioPlayer, you can declare it as a global variable, so just type this line of code below your import statements:

var audioPlayer = AVAudioPlayer()

In our demo project we have also added a Label that will show our audio player status:

@IBOutlet weak var soundStatusLabel: UILabel!

All right, now we’ll see how to play our sound when tapping the Play Button:

@IBAction func playButton(sender: AnyObject) {
    var soundURL: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("mySound", ofType: "wav")!)!
    var error:NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: &error)
    soundStatusLabel.text = "Sound is playing"


Just a few lines of code to make the magic, isn’t it great?

Before going through the above method line by line, we need to drag a sound file into Supporting Files in XCode. It can be a .wav or .mp3 sound file, in our demo project we’ve used a .wav file and renamed it as “mySound“. Here’s what the play button's method does:

  1. This is our IBAction function.
  2. Here we initialize an url for our sound so XCode will get the sound file we want to play from its path, name and type.
  3. A simple NSError declaration, needed in case something will go wrong with playing the sound file.
  4. We tell our player object to get the sound file by the url previously declared.
  5. Prepare the framework to run
  6. And finally play our sound.
  7. Change text to our label accordingly to the status of the audio player.

Here’s the code for the Pause button instead:

@IBAction func pauseButton(sender: AnyObject) {
    soundStatusLabel.text = "Sound is on pause"
  1. IBAction instance for the button
  2. Pause the audio player
  3. Update the status Label text

And finally our Stop button’s code:

@IBAction func stopButton(sender: AnyObject) {
    soundStatusLabel.text = "Sound has stopped playing"
  1. IBAction instance
  2. Our audio player will stop playing music/sound
  3. Update the status label once again

Run your project and play with the buttons, enjoy your minimal music player.

Thanks for reading, and don't forget to check out our other tutorials!

© 2015 cubycode


Submit a Comment

No comments yet.