收藏
回答

视频广告正常播放完点击关闭之后,同一个onClose()回调被多次执行。

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小游戏 Bug rewardedVideoAd.onClose()/监听用户关闭广告 客户端 6.71 2.22

看完视频广告之后监听用户点击关闭按钮,同一个onClose方法默认被多次执行,成累加状态执行。

回答关注问题邀请回答
收藏

7 个回答

  • 2018-10-07

    我敢说 这设计者一定觉得自己的设计很牛逼!  坑了很多人

    2018-10-07
    有用 1
    回复
  • 肆意不易
    肆意不易
    2021-11-10

    你好,最后怎么解决的呀?我用了videoAd.offClose() 也没用,还是会调用两次

    2021-11-10
    有用
    回复
  • L.Y.Q
    L.Y.Q
    2018-08-21

    参照楼主的思路,解决了这个问题。不知道楼主的代码怎样,我的代码如下:

                        this.videoAd.onClose(res => {

    if(!this.videoAd) return

    this.videoAd.offClose()

    // 用户点击了【关闭广告】按钮

    // 小于 2.1.0 的基础库版本,res 是一个 undefined

    if (res && res.isEnded || res === undefined) {

      // 正常播放结束,可以下发游戏奖励

    }

    else {

    // 播放中途退出,不下发游戏奖励

    }

    })


    简单测试了一下,可以达到自己想要的效果。

    2018-08-21
    有用
    回复 3
    • 陈帅
      陈帅
      2018-08-21

      就这样弄就好,只要回调后就注销掉该次监听。

      2018-08-21
      回复
    • Ly `
      Ly `
      2019-07-27回复陈帅
      嗯, 我也是这样解决的,就这个方法。
      2019-07-27
      回复
    • 花花公子
      花花公子
      2019-10-26
      this.videoAd.offClose()没有这个方法啊,而且用了之后还无效了
      2019-10-26
      回复
  • 陈帅
    陈帅
    2018-08-16

    问题已解决,rewardedVideoAd.onClose()执行后,不会自动关闭监听,必须手动关闭监听事件。不然下一次执行时又会重新创建一个新的监听事件。因此监听事件被自动叠加。所以需要每次监听结束后关闭监听事件。

    2018-08-16
    有用
    回复 5
    • 天天健的肥刀
      天天健的肥刀
      2018-08-16

      请问怎么调关闭监听,我怎么调都报错“removeListener only takes instances of Function”,调onclose都正常代码如下:

      let res:any;

                 this._videoAd.onClose(res=>{

                     if ((res && res.isEnded) || res === undefined){

                         successCallback();

                         let sbweixin:any;

                         this._videoAd.offClose(sbweixin=>{

                             console.log("sbweixin")

                         });

                     }else{

                         failCallback();

                         let sbweixin:any;

                         this._videoAd.offClose(sbweixin=>{

                             console.log("sbweixin")

                         });

                     }


      2018-08-16
      回复
    • L.Y.Q
      L.Y.Q
      2018-08-21回复天天健的肥刀

      试试offClose 不带回调函数,写成offClose()。

      2018-08-21
      回复
    • 天天健的肥刀
      天天健的肥刀
      2018-08-22回复L.Y.Q

      感谢,我试试

      2018-08-22
      回复
    • 花花公子
      花花公子
      2019-10-25回复天天健的肥刀
      使用this.videoAd.offClose()直接不运行关闭
      2019-10-25
      回复
    • L.Y.Q
      L.Y.Q
      2019-10-26
      嗯,现在我不用这种方式了,改为动态传一个方法给onClose。例如videoAd.onClose(myFunc)。
      2019-10-26
      回复
  • Not Found
    Not Found
    2018-08-15

    +1,我下午也遇到了这个问题

    2018-08-15
    有用
    回复
  • 灵芝
    灵芝
    2018-08-15

    你好,请提供出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-08-15
    有用
    回复 1
    • 曹操
      曹操
      2018-08-25

      自己心中无谱吗,老是要人家提供代码片段。视频广告回调紊乱这bug一直存在

      2018-08-25
      2
      回复
  • 曹操
    曹操
    2018-08-15

    腾讯出的东西bug一堆,敢不敢开源出来让大家一起检视代码

    2018-08-15
    有用
    回复
登录 后发表内容