当我的应用收到voip通知时,我正在后台播放音频。 但AVAudioPlayer表现得很奇怪,有时播放音频,有时也没有任何错误。 多数民众赞成我怎么玩:
func playAudio() {
// Set the sound file name & extension
let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("testAudio", ofType: "wav")!)
// Play the sound
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: alertSound)
audioPlayer.delegate = self
if (audioPlayer.prepareToPlay()) {
audioPlayer.play()
}
else {NSLog("there is error")}
} catch {
NSLog("there is \(error)")
}
}
我在AppDelegate应用程序函数中初始化AVAudioSession:
do
{
audioPlayer = AVAudioPlayer()
audioSession = AVAudioSession()
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [AVAudioSessionCategoryOptions.MixWithOthers])
try audioSession.setActive(true)
try audioSession.overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
}
catch {
NSLog("there is \(error)")
}
当然还有var audioPlayer: AVAudioPlayer!
作为类动词
它在第一或第二分钟工作,然后AVAudioPlayer停止响应而没有任何错误。 我甚至尝试使用AVAudioPlayerDelegate来接收事件,但没有任何事情发生。
有人可以解释这种行为吗?这是ios中的一个错误吗?或者我做错了什么? 在Ios 9.2,iphone 6设备,xcode 7.2上测试。
感谢。