出现这个问题大概率是你的代码顺序写错了,还有,你点击关闭广告关闭按钮时没将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()外了,这样如果其他地方想单独使用的话就简单多了