收藏
回答

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

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

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

最后一次编辑于  2018-08-15  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

6 个回答

  • nickname
    nickname
    2018-08-15

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

    2018-08-15
    赞同
    回复 1
    • 曹操
      曹操
      2018-08-25

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

      2018-08-25
      1
      回复
  • 小峰
    小峰
    2018-10-07

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

    2018-10-07
    赞同 1
    回复
  • 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
    赞同
    回复 2
    • 陈帅
      陈帅
      2018-08-21

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

      2018-08-21
      回复
    • Ly ` 🇨🇳
      Ly ` 🇨🇳
      07-27回复陈帅
      嗯, 我也是这样解决的,就这个方法。
      07-27
      回复
  • 陈帅
    陈帅
    2018-08-16

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

    2018-08-16
    赞同
    回复 3
    • 犯困的飞仔
      犯困的飞仔
      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
      回复
  • Not Found
    Not Found
    2018-08-15

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

    2018-08-15
    赞同
    回复
  • 曹操
    曹操
    2018-08-15

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

    2018-08-15
    赞同
    回复