当前位置: 首页 > 工具软件 > laya-snakes > 使用案例 >

laya-oppo 广告问题ad had showd, please reload

宋飞掣
2023-12-01

报错:code: 1004, msg: "ad had showd, please reload"

出现这个问题大概率是你的代码顺序写错了,还有,你点击关闭广告关闭按钮时没将ad重置为null,如下

广告对象.onClose(()=>{
    广告对象.destroy();
    广告对象=null;
})

 如果你不重置为null只是执行了destroy()去销毁广告对象的话,那它这个广告虽然是被你销毁了,但实际上它还是存在的,需要将它重置才行

我也遇到过相同的问题,因为用的是同事的代码,自己一开始一直以为他们对接过oppo的广告,按理说代码是没错,后来感觉越来越不对,自己重新写了一段代码才解决的。我记得我当时是做的九宫格的广告。

    private gamePortalAdId = 这里代入你的九宫格广告id;
    private gamePortalAd = null;
    /**
     * 互推盒子九宫格广告
     */

    //创建九宫格广告
    createAd() {
        //如果你不知道qg是什么 qg即为当前的oppo小游戏
        //可以通过这样的方式定义qg变量
        let qg=Laya.Browser.window.qg;
        this.gamePortalAd = qg.createGamePortalAd({
            adUnitId: this.gamePortalAdId
        })
    }

    //销毁
    destroyGamePortalAd() {
        this.gamePortalAd.destroy();
        this.gamePortalAd = null;
    }
    // 展示
    showGamePortalAd() {
        console.log("九宫格广告showTime", this.gamePortalAd)
        if (!this.gamePortalAd) {
            this.gamePortalAd = qg.createGamePortalAd({
                adUnitId: this.gamePortalAdId
            })
        }
        this.gamePortalAd.load();
        this.gamePortalAd.onLoad(() => {
            this.gamePortalAd.show().then(function () {
                console.log('show success')
            }).catch(function (error) {
                console.log('show fail with:' + error.errCode + ',' + error.errMsg)
            })
        })
        this.gamePortalAd.onClose(() => {
            this.destroyGamePortalAd();
        })
        this.gamePortalAd.onError(function (err) {
            console.log(err, "this.gamePortalAd err")
        })
    }

 将代码拆分出来讲解

调用九宫格广告的话使用showGamePortalAd(),里面会对当前是否存在九宫格广告进行判断,本来应该是要多加一些执行代码的,但我感觉没啥必要。

我将创建和销毁九宫格的方法都放在showGamePortalAd()外了,这样如果其他地方想单独使用的话就简单多了

 

 类似资料: