在我的iOS应用中,我有一个自定义音频播放器类,可以使用基于URL的音频资源创建基础AVPlayer
。这一切都非常普遍 - 根据URL加载AVPlayerItem
,异步加载资产数据,然后用它来创建AVPlayer
实例。
一切都很好,但我刚发现一个案例,AVPlayer加载音频资产并正确解析,但拒绝播放任何音频。
当我在启动应用程序之前启动了几个游戏时会发生这种情况。例如。我的世界和纪念碑谷。没有任何防错方法可以重现这一点(有时候会启动Minecraft导致出现此错误,有时候不会出现),但是如果我开始使用音频的几个游戏,最终会出现错误。
当我调试应用的当前状态时,AVPlayer
没有错误。状态已准备好等等。一切看起来都应该如此。 AVPlayerItem
也是如此。我没办法让应用程序播放音频...
...除非我启动Spotify并播放一首歌。这可以修复任何可能存在的音频锁并导致我的播放器无法播放。如果我然后离开Spotify并打开我的应用程序,我的音频播放器现在可以播放音频。
任何可能导致此问题的想法?我没有想法。
答案 0 :(得分:0)
不确定答案是否正确,但您可能希望将AVSession设置为音频。 AVSession info他们告诉电话你的音频是否应该播放给其他人,如果有来电或者你去后台等应该停止等等
有些应用程序可能正在更改音频会话,而您没有正确指定您的会话。
我将此代码用于我的:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.interruptSpokenAudioAndMixWithOthers)
}
catch {
// report for an error }
这是适用于我的类别选项,但AVPlayer有不同的选项,试着看看是否有帮助。