这是一个部分用户触发的错误,地区国内。故无法提供可重现的代码,实在抱歉。
# 我们的测试方法
用户遇到播放错误,且更换地址重试3次都无法解决是,会提示用户,并请示到【测试界面】。
我们预先准备了4个播放地址(mp3和mp4格式),分别对 BackgroundAudioManager 和 InnerAudioContext 进行测试。
触发过 time-update 事件则标记为 【正常】并结束测试;触发过 error 事件则标记为 【异常】并结束测试。
# 我们测试代码:
a. BackgroundAudioManager版本 ⬇⬇⬇⬇⬇⬇
Component({ properties: { source: { type: Object, } }, methods: { nativePlayData() { const self = this ; const data = this .data.source; const backgroundAudioManager = wx.getBackgroundAudioManager(); this .ctx = backgroundAudioManager; backgroundAudioManager.title = '测试音频' backgroundAudioManager.epname = '' ; backgroundAudioManager.singer = '' ; backgroundAudioManager.coverImgUrl = data.shelfPicture; backgroundAudioManager.src = data.playUrl; backgroundAudioManager.onTimeUpdate( this .updateHandler = function (e) { self.triggerEvent( 'time-update' , e); }); backgroundAudioManager.onError( this .errorHandler = function (res) { self.triggerEvent( 'audio-error' , {code: res.errCode, text: res.errCode + res.errMsg}); }); }, }, ready() { this .nativePlayData(); }, detached() { this .ctx.stop(); } }); |
b. InnerAudioContext版本 ⬇⬇⬇⬇⬇⬇
Component({ properties: { source: { type: Object, } }, methods: { nativePlayData() { const self = this ; const data = this .data.source; const innerAudioContext = wx.createInnerAudioContext(); this .ctx = innerAudioContext; innerAudioContext.autoplay = true ; innerAudioContext.src = data.playUrl; innerAudioContext.onTimeUpdate( this .updateHandler = function (e) { self.triggerEvent( 'time-update' , e); }); innerAudioContext.onError( this .errorHandler = function (res) { self.triggerEvent( 'audio-error' , {code: res.errCode, text: res.errCode + res.errMsg}); }); }, }, ready() { this .nativePlayData(); }, detached() { this .ctx.stop(); try { this .ctx.offError( this .errorHandler); } catch (e) {} try { this .ctx.offTimeUpdate( this .updateHandler); } catch (e) {} } }); |
# 用户检测结果:
下面是经过我们半个月的持续观察,总结出来的信息,希望能帮助找出问题。
每天影响用户0.2~1%不等。
用户不可以播放的时候,影响时长为0.5~5天不等。
跟网络也有一定关系,之前接待的一个用户就是4g不可以播,切到wifi可以;然后再切回4g时,依然不可以。
我们的服务没问题,如图BackgroundAudioManager 不可以, InnerAudioContext 可以。直接网页打开链接也能播。
多见于IOS。