首页 > 解决方案 > 应用程序在后台时,AVAudioPlayer 一段时间后不播放

问题描述

我正在制作一个闹钟应用程序。为了在适当的时间播放警报声,我使用myAudioPlayer.play(atTime: myAudioPlayer.deviceCurrentTime + secondsUntilAlarm). 这样,即使应用程序在后台,音频播放器也会在适当的时间播放警报声音。

注意:我从另一个 SO 答案中得到了这个想法,不幸的是我现在似乎找不到。

但是,我注意到的是,如果secondUntilAlarm值相对较快,例如可能 20 分钟或更短(当然转换为秒,因为这是该方法所需要的),则警报正在正确播放。但是,如果它比这更长,声音就不会播放。这种方法在后台的工作方式有什么我遗漏的吗?应用程序是否会进入某种暂停状态,或者会导致音频播放器无法触发播放?

任何建议或意见将不胜感激-谢谢!

标签: iosswiftavaudioplayer

解决方案


所以我实际上已经确定,应用程序是否进入挂起状态并不重要(实际上,这是意料之中的)。我已经确定了有时不播放警报声音的原因是因为我打开另一个带有音频的应用程序会停用我的应用程序的音频会话(因此,它与设置警报的时间无关)。为了解决这个问题,我所要做的就是确保我.mixWithOthers为我的应用程序的音频会话进行了设置。这样,来自其他应用程序的其他音频会话不会停用我的!


推荐阅读