如果你是用AudioContext播放的声音(例如Howler),那么在微信中,支付成功后,很可能声音就无法播放了。
同样的问题,如果在播放声音途中,来了一个电话,那么电话挂断后,可能声音也无法正常播放。
失败的尝试
在Google之后,我们尝试了几种方法,但均已失败告终。
- 支付前调用
ctx.suspend()
,支付后调用ctx.resume()
- 支付后重新解锁iOS音频
- 支付前
ctx.close()
,支付后重新初始化一个AudioContext
解决办法
- 支付前,使用HTML5的
<Audio>
标签(不是AudioContext
)循环播放一段空白音频,不要停止。 - 支付过程中,这段音频会一直保持播放。
- 支付后,停止这段音频播放。
- 我们发现,只要支付结束后,页面有音频在播放,那么AudioContext就不会失效。
(正文完)