uni-app uni.createInnerAudioContext() iOS真机运行onTimeUpdate 事件会一直触发

uni-app uni.createInnerAudioContext() iOS真机运行onTimeUpdate 事件会一直触发

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 window 10
HBuilderX 正式
HBuilderX版本 4.45
手机系统 iOS
手机版本号 iOS 15
手机厂商 苹果
手机机型 iPhone 12
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  1. 使用uni.createInnerAudioContext(),正常播放音频
  2. 使用onSeekingonSeeked完成拖动播放,
  3. 再点击暂停

预期结果:

  • 暂停后可以取消监听onTimeUpdate

实际结果:

  • onTimeUpdate事件还是会一直触发,destroy销毁当前示例也无用

bug描述:

ios真机运行下,拖动播放引起的问题。拖动播放后,在走暂停事件,onTimeUpdate事件还是会触发


更多关于uni-app uni.createInnerAudioContext() iOS真机运行onTimeUpdate 事件会一直触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

编写了一个简单的实例。播放是正常的。你升级 HBuilderX 到最新版再试一下
拖动播放是你写的 UI 调用的 seek 吗?暂停之后音乐实际停止了吗?提供下你的复现工程,提供更多信息,有助于定位和解答你的问题。

更多关于uni-app uni.createInnerAudioContext() iOS真机运行onTimeUpdate 事件会一直触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我已解决 其实不光是你说的问题 播放久了还会卡死 可以联系我 vx:hao1015l

@DCloud_UNI_OttoJi
Hbuilder x 更新了还是不行 版本4.57

拖动是调用seek
暂停音乐停止了

具体代码
压缩包中的组件在页面中引入 <template>
<audio-view></audio-view>
</template>

<script> import audioView from './audio-view.vue' export default { components: { audioView } } </script>

解决了吗

回复 1***@qq.com: 还没,等下官方,也不急

我看了你的代码,你尝试修改 onSliderChange 里,判断播放状态的条件,从 if (this.playStatus) { 改成 if (this.innerAudioContext.paused) { 再试一下

回复 DCloud_UNI_OttoJi: 好的,谢谢

这是一个iOS平台下已知的音频播放器行为问题。在iOS系统中,onTimeUpdate事件会持续触发,即使音频已暂停或销毁。这是底层WebView对HTML5音频API的实现差异导致的。

解决方案建议:

  1. 在暂停时手动设置标志位,在onTimeUpdate回调中根据标志位决定是否处理事件
  2. 或者使用offTimeUpdate方法取消监听(注意在uni-app中可能需要先调用off再重新绑定)

示例代码:

let isPaused = false;
audio.onTimeUpdate(() => {
  if(isPaused) return;
  // 正常处理逻辑
});

// 暂停时
audio.pause();
isPaused = true;
回到顶部