移动端H5页面-音频audio不播放问题

699 阅读1分钟

需求描述:1.点击右上角图标,进行文本语音播放;2.接口请求返回数据后自动播放音频;如下图

1692695880631.jpg

问题描述:在IOS移动端,ios不能连续播放;当接口请求返回数据后音频文件没有播放。

问题分析:ios中认为每次播放都必须源于用户的操作,也就是说不是在点击事件里面就不会被允许播放。每次播放完成后不要清空audio对象

原因: iOS 的音频播放机制更严格

  • 资源未正确释放

    • 虽然 JavaScript 的 audio 变量被设为 null,但 iOS 底层可能仍然占用着音频资源。
    • 下次再创建 new Audio() 时,iOS 可能认为“上一个音频还没结束”,拒绝播放。
  • ❌ 失去用户交互关联

    • iOS 要求 play() 必须由 用户点击 触发。
    • 如果销毁 Audio 对象后重建,新的 Audio 对象可能失去这个关联,导致播放失败。

1692696489936.jpg

解决方案:重用第一次生成的audio对象,只是改变audio.src的指向新的音频地址。

1692696754870.jpg

ps : 这个问题只存在ios中,安卓和web端浏览器没有问题。