声音文件在模拟器中工作正常,但在iPhone中不工作

时间:2018-08-20 00:32:53

标签: ios iphone swift

我有一个应用程序,如果单击按钮,它会播放声音。但是,在实际设备上没有声音。我检查了stackoverflow中其他人已经提供的所有解决方案。似乎没有任何作用。该应用程序不会崩溃。它只是不播放声音。在模拟器中,它可以完美运行。区分大小写没有问题。另外,电话不会静音。

代码:

var audioPlayer : AVAudioPlayer!

按下按钮时:

let soundPath = Bundle.main.path(forResource: "bell-ringing-01", ofType: "mp3")
audioPlayer = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: soundPath!))
audioPlayer?.play()

在编译和运行时也没有错误。该应用程序加载良好。

2 个答案:

答案 0 :(得分:0)

已解决!以下代码有效。按下 Play 按钮后,铃声会播放

func playSound(){

let soundURL = Bundle.main.url(for资源:“ bell-ringing-01”,扩展名:“ mp3”)

    do{
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)
        try audioPlayer = try AVAudioPlayer(contentsOf: soundURL!)

    }

    catch{

        print(error)
    }
   audioPlayer.play()

}

仅在模拟器中有效的代码,但在iPhone 7中无效:

func playSound(){

   // let soundURL = Bundle.main.url(forResource: selectedSoundFileName, withExtension: "wav")

    let soundPath = Bundle.main.path(forResource: "bell-ringing-01", ofType: "mp3")

    audioPlayer = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: soundPath!))
    audioPlayer?.play()




}
  

在不添加 AVAudioSession 的情况下,该代码仅在模拟器中运行,而不在我的iPhone 7中运行。

答案 1 :(得分:0)

我想添加这两行可以解决现有代码中的问题:

  

尝试AVAudioSession.sharedInstance()。setCategory(AVAudioSessionCategoryPlayback)

     

尝试AVAudioSession.sharedInstance()。setActive(true)