快速的音乐在背景中

时间:2016-02-25 02:01:37

标签: ios iphone swift audio avaudioplayer

我正在使用以下功能在我的应用中播放声音fx。我想这样做,以便用户可以同时收听他们的iphone音乐。

我在多个视图控制器上也使用它..不确定是否会改变任何东西。实现这一目标的最简单方法是什么?

var audioPlayer = AVAudioPlayer()
func playSound (Sound: String, Type: String) {

    let path = NSBundle.mainBundle().pathForResource(Sound, ofType: Type)!
    let url = NSURL(fileURLWithPath: path)

    do {
        let sound = try AVAudioPlayer(contentsOfURL: url)
        audioPlayer = sound
        sound.play()
    } catch {
        // couldn't load file :(
    }
}

1 个答案:

答案 0 :(得分:1)

你可以做到

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

<强>更新

请记住您正在执行此操作的文件中的import AVFoundation,并且还要使用错误处理,因为此方法会抛出。

例如,可以在这样的事情中使用它,将错误处理的责任向上传递。

import AVFoundation

func configureAudioSession() throws {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
}

或者如果不想处理错误(不推荐),例如:

_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

你只需要这样做一次(因为我们正在访问sharedInstance()),所以每当你配置你的音频会话时,这将是一个很好的地方。

如果您要创建更多AVAudioSessions,则需要为每个音频会话执行此操作。