Swift, how to play sound when press a button

Swift 3

the syntax is now as follows: first add import AVFoundation on top of the code to have access to AVFoundation Framework.

import UIKit
import AVFoundation

class ViewController: UIViewController {
    //this is your audio playback instance
    var audioPlayer = AVAudioPlayer()


    override func viewDidLoad() {
        super.viewDidLoad()
        // address of the music file.
        let music = Bundle.main.path(forResource: "Music", ofType: "mp3")
        // copy this syntax, it tells the compiler what to do when action is received
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: music! ))
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
            try AVAudioSession.sharedInstance().setActive(true)
        }
        catch{
            print(error)
        }

    }
//this runs the do try statement
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func play(_ sender: AnyObject) {
        audioPlayer.play()
    }
    @IBAction func stop(_ sender: AnyObject) {
        audioPlayer.stop()
    }
}

In Swift 4:

import AVFoundation
class ViewController: UIViewController, ARSCNViewDelegate, ARSessionDelegate {
    let popSound = Bundle.main.url(forResource: "Pop", withExtension: "mp3")
    var audioPlayer = AVAudioPlayer()

  override func viewDidLoad() {
       do {
            audioPlayer = try AVAudioPlayer(contentsOf: popSound!)
            audioPlayer.play()
        } catch {
            print("couldn't load sound file")
        }
}

I hope it will help you.

import UIKit
import AVFoundation

class ViewController: UIViewController {
   // make sure to add this sound to your project
   var pianoSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("C", ofType: "m4a"))
   var audioPlayer = AVAudioPlayer()

   override func viewDidLoad() {
       super.viewDidLoad()   

       audioPlayer = AVAudioPlayer(contentsOfURL: pianoSound, error: nil)
       audioPlayer.prepareToPlay()
   }

   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }

   @IBAction func PianoC(sender: AnyObject) {
       audioPlayer.play() 
   }

}

Latest Swift 4.2 :

   let pianoSound = URL(fileURLWithPath: Bundle.main.path(forResource: "btn_click_sound", ofType: "mp3")!)
   var audioPlayer = AVAudioPlayer()

   @IBAction func PianoC(sender: AnyObject) {
       do {
            audioPlayer = try AVAudioPlayer(contentsOf: pianoSound)
            audioPlayer.play()
       } catch {
          // couldn't load file :(
       } 
   }

Tags:

Swift