应用程序在后台时,AVAudioPlayer 一段时间后不播放

Posted

技术标签:

【中文标题】应用程序在后台时,AVAudioPlayer 一段时间后不播放【英文标题】:AVAudioPlayer not playing after a while when app is in background 【发布时间】:2021-08-26 16:49:05 【问题描述】:

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

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

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

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

【问题讨论】:

是的,该应用程序肯定被暂停了。 ios 上的应用程序不会永远在后台运行。你必须使用本地通知之类的东西。 @jnpdx 我已经意识到该功能在应用程序处于挂起状态时仍然有效!只需添加mixWithOthers,这样我的音频会话就没有被停用????。 【参考方案1】:

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

【讨论】:

以上是关于应用程序在后台时,AVAudioPlayer 一段时间后不播放的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序进入后台时停止 AVAudioPlayer 音乐

iOS - AVAudioPlayer 在后台不会继续播放下一首歌曲

使用 AVAudioPlayer 在后台播放声音序列

使用 AVAudioPlayer iOS 9 无法在后台播放音频

AVAudioPlayer 后台任务无法在 iOS 5.0.1 设备上运行,但在 iOS 5 模拟器上运行

在后台播放一个 AVAudioPlayer 实例