* Bug 表现是什么?预期表现是什么?
andriod 4.4.2
微信版本6.6.1
华为荣耀6P
目前遇到第一例未知BUG导致音频播放错误,用户无法正常使用
在运维中心截取到的错误大致为
setBackgroundAudioState:fail: jsapi has no permission, event=setBackgroundAudioState, runningState=background, permissionMsg=permission ok, detail=jsapi permission required playing audio but current not playing audio in background state;at App onHide function;at api setBackgroundAudioState fail callback function
和
APP-SERVICE-SDK:Can not set wx.backgroundAudio.src, background audio is preempted.;at App setOrigin function;at setTimeout callback function
* 如何复现?
在全局app.js中初始化一个BackgroundAudioManager,
点击播放任意音频出错。
* 提供一个最简复现 Demo
App({ globalData: { audioCtx: null , }, onLaunch(options) { // 小程序初始化 this .globalData.audioCtx = wx.getBackgroundAudioManager(); }, // 设置原生信息封面 setOrigin(cb) { setTimeout(() => { this .globalData.audioCtx.src = [MP3音频]; this .globalData.audioCtx.play(); }, 200); }, }) |
在index页面调用
|
setBackgroundAudioState:fail: jsapi has no permission, event=setBackgroundAudioState, runningState=background, permissionMsg=permission ok, detail=jsapi permission required playing audio but current not playing audio in background state;at App onHide function;at api setBackgroundAudioState fail callback function
这个错误在Android手机下拉/iPhone上拉的迷你播放器中操作暂停按钮,然后再切换上一首或下一首时,必现。
在播放中进行切换上一首或下一首,这时是正常的。
推断:点击迷你播放器暂停时,然后再切歌,这个时候浏览器检测到Audio其实时没有音频再播放的,因此外部操作切换,触发小程序内部进行切数据源时,就违反了浏览器自动后台播放音频的限制,造成了这个没有权限的错误。