uni-app 背景音乐播放首次加载onUpdateTime不生效

uni-app 背景音乐播放首次加载onUpdateTime不生效

1 回复

更多关于uni-app 背景音乐播放首次加载onUpdateTime不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,背景音乐首次加载时onUpdateTime不生效,通常是由于音频播放器状态未就绪或监听时机问题导致的。以下是常见原因及解决方案:

  1. 播放器未就绪
    首次加载时,音频可能尚未缓冲完成,导致onUpdateTime无法触发。
    解决方法:在onCanplay事件触发后再开始播放,确保音频已就绪。

    const bgAudio = uni.createInnerAudioContext();
    bgAudio.onCanplay(() => {
      bgAudio.play();
    });
    
  2. 监听时机问题
    若在播放后才监听onUpdateTime,首次更新可能被遗漏。
    解决方法:在播放前提前绑定事件监听。

    const bgAudio = uni.createInnerAudioContext();
    bgAudio.onTimeUpdate(() => {
      console.log('时间更新:', bgAudio.currentTime);
    });
    bgAudio.src = 'audio.mp3';
    bgAudio.play();
    
  3. 音频源加载延迟
    网络音频源首次加载较慢,可能影响事件触发。
    解决方法:预加载音频或使用本地文件,减少延迟。

    bgAudio.autoplay = true; // 结合autoplay确保加载后立即播放
    
  4. 平台差异处理
    部分平台(如iOS)对音频自动播放有限制,需用户交互触发。
    解决方法:在按钮点击等交互事件中初始化播放。

    // 在用户点击事件中触发播放
    document.getElementById('playBtn').addEventListener('click', () => {
      bgAudio.play();
    });
    
  5. 事件绑定顺序
    确保事件绑定在播放前完成,避免遗漏首次更新。

    // 正确顺序:创建实例 → 绑定事件 → 设置源 → 播放
    const bgAudio = uni.createInnerAudioContext();
    bgAudio.onTimeUpdate(updateCallback);
    bgAudio.src = 'audio.mp3';
    bgAudio.play();
回到顶部