简体   繁体   中英

Swift 3 - AVAudioPlayer is not playing sound

I have a simple program which has one button and its only function is to trigger an sound output.

The app works perfectly when tested on an iOS simulator, but when I test it on an iPhone, the app is not playing any sound. I have tested this on two iPhones.

This was working once upon a time. I don't know if updating to iOS 10 has caused the issue.

Here is my code:

//Code
import UIKit
import AVFoundation

var audioPlayer = AVAudioPlayer()


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let music = Bundle.main.path(forResource: "sound", ofType: "wav")

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: music! ))
        }
        catch{
            print(error)
        }

    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func playSound(_ sender: UIButton) {

        audioPlayer.play()
    }

}

Would be grateful for any answers. Thanks.

   override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let music = Bundle.main.path(forResource: "sound", ofType: "wav")

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: music! ))
audioPlayer.delegate = self
audioPlayer.preparedToPlay()
        }
        catch{
            print(error)
        }

    }
import UIKit
import AVFoundation

class ViewController: UIViewController {

var btnSound: AVAudioPlayer!

override func viewDidLoad() {
    super.viewDidLoad()
    //locate resource
    let path = Bundle.main.path(forResource: "sound", ofType: "wav")
    let music = URL(fileURLWithPath: path!)

    do{
        try btnSound = AVAudioPlayer(contentsOf: music)
        btnSound.prepareToPlay()
    } catch let err as NSError{
        print(err.debugDescription)
    }
 }
}

func playSound(){
    if btnSound.isPlaying{
       //stop playing sound file if already playing
        btnSound.stop()
    }
    //play sound
    btnSound.play()
}

@IBAction func playSound(sender: UIButton){
    //call playSound function on pressing the button you attach this function to
    playSound()
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM