background audio is preempted怎么解决?
发布于 6 年前 作者 rfan 6925 次浏览 来自 问答

如题,将小程序中带背景音乐的页面(里面onLoad()事件中有wx.getBackgroundAudioManager().src="xxxx"的赋值语句)转发分享给自己,打开后提示如下错误:

thirdScriptError

APP-SERVICE-SDK:Can not set wx.backgroundAudio.src,background audio is preempted.

大概意思我的理解是:背景音乐被占用,但这本来就是一个对背景音乐src的赋值操作,当从转发分享进入该页面时,一个微信只能有一个背景音乐的话那它直接切换src值不就可以了吗?为什么还会出现背景音乐被占用的问题?

请问如何解决?

4 回复

你好,这个错误信息应该只出现在小程序在后台且被其他音乐占用了音乐播放器的时候。你描述的这个情况属于预期之外,可能是 bug,麻烦提供一下详细调用流程以及版本信息。

我也碰到了,在后台请求播放就是不行

版本是最新的1.7.0

@Link

具体情况:我在开发一个音乐点播分享功能,用背景音频wx.getBackgroundAudioManager()播放音乐。

在音乐播放详情页musicDetail.js的onLoad()事件代码如下:

/**

  * 生命周期函数–监听页面加载

  */

onLoad: function (options) {

    var that = this;

    if (options.music) {//如果有传入歌曲信息,说明来自点播分享

    app.globalData.currentMusic = JSON.parse(options.music);

    wx.getBackgroundAudioManager().src = app.globalData.currentMusic.src;

    wx.getBackgroundAudioManager().coverImgUrl = app.globalData.currentMusic.poster;

    wx.getBackgroundAudioManager().singer = app.globalData.currentMusic.author;

    wx.getBackgroundAudioManager().title = app.globalData.currentMusic.name;

    }

……其它代码

}

/**

  * 用户点击右上角分享

  */

onShareAppMessage: function () {

    var that = this;

    if (that.data.onDemandContent == ‘’) {

    return;

    }

    return {

    title: that.data.onDemandTitle,

    path: ‘/pages/musicDetail/musicDetail?music=’ + JSON.stringify(app.globalData.currentMusic)

    }

 }

  • 正常在小程序进入音乐播放详情页面musicDetail.js时onLoad()无参数

  • 当通过分享时页面进入时,路径携带参数music。


测试操作流程:我是在一台手机上同一个微信帐号进行测试,

1、用自己的手机进入小程序音乐播放详情,然后分享给自己(同一微信帐号)的‘文件传输助手’

2、退出到聊天界面,进入‘文件传输助手’,点开刚刚分享的音乐详情页面

3、出现如题所述错误。


请教,是何问题,如何解决?

回到顶部