我在项目中发现,每次页面进入后用户第一次点击音乐条目时没有声音,控制台报 operateAudio:fail:play audio fail。但再次点击同一按钮时音乐才会正常播放。开发工具没有问题,只在真机有这行为。
已尝试:
- 将
createInnerAudioContext()提前到onLoad中; - 在点击时才初始化;
- 使用
onCanplay再play();
但问题仍存在。想请问大家有没有类似经历?你们是如何兼容“首次点击”即播放的?
onLoad() {
// 初始化音频上下文
this.audioContext = wx.createInnerAudioContext();
this.audioContext.onEnded(() => {
this.stopAllMusic();
});
// 默认选中并播放第一首
const firstMusic = this.data.musicList[0];
this.setData({
currentPlaying: firstMusic
});
this.playMusic(firstMusic);
},
playMusic(music) {
// 更新播放状态
const updatedList = this.data.musicList.map(item => ({
...item,
isPlaying: item.id === music.id
}));
this.setData({
musicList: updatedList,
currentPlaying: music
});
// 播放音乐
this.audioContext.src = music.url;
this.audioContext.play(); // 这里第一次点击会报错:operateAudio:fail:play audio fail
},

ok,问题解决