iOS的后台播放实在是折磨人,各种原因导致不能后台播放,这次又遇到了audio unit初始化失败的问题。
情况是这样的:点击播放一首歌曲,然后快速使app进入后台模式,这个错误就比较常现了,大约有三四成的比例。这个真的是毫无头绪,感觉不到解决的希望,就各种看资料,这种搜索。上帝保佑,后来在stackoverflow上看到有一个问题是voip在后台模式收到消息后启动失败,也是这个错误,看到一个回答说是因为在后台模式无法打开音频设备的缘故。当时只是纪录了答案,但是毕竟情况不太一样,别人的问题是在后台启动失败,咱是在进入后台的时候偶尔失败,不是必现,只是概率较高而已。所以也不是很放在心上。后来在我持续的测试这个问题的过程中,发现貌似之后第一次启动设备时快速进入后台才会出现这个问题,如果正常播放过一次之后,则不会再遇到这个问题了。观察到这个现象之后给了我相当大的启示,在没有任何播放历史的情况下,快速后台必须失败,是不是也是因为在后台不能打开音频设备呢,为了验证是否是这一问题,就在程序启动的时候播放了一小段音频,之后再次播放音频然后快速后台,audio unit 初始化失败的情况再没有遇到过,看来问题就出在这里。
即在后台模式无法激活音频设备,所以在进入后台模式之前,必须首先激活一下设备,我将这个过程叫做预热设备。怎么激活呢?可以在程序处于前台时,播放一点点无声音频,然后立即关闭,即可解决该问题。