需求描述:1.点击右上角图标,进行文本语音播放;2.接口请求返回数据后自动播放音频;如下图
问题描述:在IOS移动端,ios不能连续播放;当接口请求返回数据后音频文件没有播放。
问题分析:ios中认为每次播放都必须源于用户的操作,也就是说不是在点击事件里面就不会被允许播放。每次播放完成后不要清空audio对象
原因: iOS 的音频播放机制更严格
-
❌ 资源未正确释放:
- 虽然 JavaScript 的
audio变量被设为null,但 iOS 底层可能仍然占用着音频资源。 - 下次再创建
new Audio()时,iOS 可能认为“上一个音频还没结束”,拒绝播放。
- 虽然 JavaScript 的
-
❌ 失去用户交互关联:
- iOS 要求
play()必须由 用户点击 触发。 - 如果销毁
Audio对象后重建,新的Audio对象可能失去这个关联,导致播放失败。
- iOS 要求
解决方案:重用第一次生成的audio对象,只是改变audio.src的指向新的音频地址。
ps : 这个问题只存在ios中,安卓和web端浏览器没有问题。