微信小程序(不是游戏),激励视频调用BUG,每次都增加
发布于 5 年前 作者 guiying50 11647 次浏览 来自 问答

同一个页面连续看4次视频

每次看完后点关闭后调用videoAd.onClose(res => {}

看视频广告第1次关闭后

if (res.isEnded==true) {
    //执行代码1次
}

看视频广告第2次关闭后,

if (res.isEnded==true) {
    //执行代码 执行2次
}

看视频广告第3次关闭后,

if (res.isEnded==true) {
    //执行代码 执行3次
}

看视频广告第4次关闭后,

if (res.isEnded==true) {
    //执行代码 执行4次
}

以此类推,为什么每次关闭后每次都多执行一次?

求解答!

3 回复

小程序激励视频是页面范围内单例的,也就是在一个页面内,不管你创建多少个,其实都是返回同一个实例,如果你对同一个实例绑定了多次onClose事件,就会执行多次回调,建议是统一绑定一次,或者解绑后再绑定事件

let rewardedVideoAd=null;


onLoad: function (options) {


        if (wx.createRewardedVideoAd) {
              rewardedVideoAd = wx.createRewardedVideoAd({ adUnitId: data.Adv_yz_free })
              rewardedVideoAd.onLoad(() => {
                console.log('onLoad event emit')
              })
              rewardedVideoAd.onError((err) => {
                console.log('onError event emit', err)
              })
              rewardedVideoAd.onClose(res => {
                console.log('onClose event emit', res)
                // 用户点击了【关闭广告】按钮
                if (res && res.isEnded) {
                  console.log("正常播放结束,可以下发游戏奖励");                
                    that.getyezi();
                  }                 
                   
                } else {
                  // 播放中途退出,不下发游戏奖励                 
                }
              })

        }

},

getyezi:function(){

 //正常结束回调事件

}


我知道这个问题,你的广告onClose回调是不是没写在Page的onLoad方法里,必须写在onLoad时

回到顶部