最近鼓捣的小程序要用到背景音乐这个wx.getBackgroundAudioManager
背景音乐插件。在小程序管理后台的 【开发】有报一些关于wx.getBackgroundAudioManager
的错误。所以也查了一些相关资料并没有找出原因,经过自己仔细检查代码发现了。原来是在没有开启背景音乐的情况下,进行了其它的相关操作导致。
完整错误代码如下:
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 api setBackgroundAudioState fail callback function Error: 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 Function.fail (WASubContext.js:1:661700) at WASubContext.js:1:360913 at v (WASubContext.js:1:361082) at WASubContext.js:1:361946
翻译过后的意思是
set背景音频状态:失败:jsapi没有权限,事件_set背景音频状态,运行状态_背景,权限Msg_权限确定,细节jsapi权限需要播放音频,但当前不播放音频在后台状态;在api设置背景音频状态故障回调函数 错误: 设置背景音频状态:失败:jsapi 没有权限,事件_set背景音频状态,运行状态_背景,权限Msg_权限确定,详细信息jsapi权限需要播放音频,但当前不播放音频在后台状态 在函数.fail (WASubContext.js:1:661700) 在 WASubContext.js:1:360913 在 v (WASubContext.js:1:361082) 在 WASubContext.js:1:361946
起初我是在APP.js中声明了公共变量 back:
const back = wx.getBackgroundAudioManager();
在进入页面的时候判断如果开启了音乐就播放背景音乐
bgmusic: function () {
var that=this;
function player() {
if (back.title !="bgmusic"){
back.title = "bgmusic";
}
back.src ="音乐url";
back.onEnded(() => {
player();
})
back.onStop((e) => {
that.stopmusic();
});
}
if (that.globalData.bgsound) {
player();
}
},
当页面关闭的时候调用
stopmusic:function(){
var that=this;
back.stop();
}
发现关闭页面执行的方法中原来没判断有没有开启背景音乐,所以才会报这个错误。我加上了判断是否开启背景音乐的变量,如果播放了背景音乐才能停止背景音乐。
stopmusic:function(){
var that=this;
if (that.globalData.bgsound) {
back.stop();
}
}
总结:背景音乐没有播放的状态下使用了比如停止,或者暂停等事件导致 这个错误,所以必须判断是否已经播放背景音乐才能对它进行其它相关操作