广告组件播放完成自动加载下一个Video时报错如下 并且没有调用到RewardedVideoAd的onError方法
11 listeners of event hide have been added possibly causing memory leak
本人的播放代码如下:
private videoAd: wx.IVideoAd;
public videoEndCallBack: Function;
public videoCallBackInst: any;
/**能否播放**广告 注:微信每个用户的广告次数不定,播放前要判断是否加载成功*/
public canPlayVideo: boolean;
/**初始化**广告 只在微信登陆后调用一次 */
public initVideoAd() {
var adUnitIdVal: string;
adUnitIdVal = "adunit-XXXXXXXXX";
if (!this.videoAd) {
this.videoAd = wx.createRewardedVideoAd({ adUnitId: adUnitIdVal });
}
this.videoAd.onLoad(() => {
console.log('激励** 广告加载成功');
UserInfoData.Ins.canShowVIdeo = this.canPlayVideo = true;
})
this.videoAd.onError((err) => {
console.log('激励** 广告加载失败 尝试加载下一个');
UserInfoData.Ins.canShowVIdeo = this.canPlayVideo = false;
this.videoAd.load()
.then(() => this.videoAd.show())
})
}
/**
* 播放微信广告**
* @param callBack 播放完成回调函数
* @param callInst 播放完成回调实例
*/
public showVideoAd(callBack: Function, callInst: any) {
this.httpIns.statLog(common.enumtype.LogIds.LOG_CLICK_PLAYER_VIDEO);
this.videoEndCallBack = callBack;
this.videoCallBackInst = callInst;
this.videoAd.show();
this.videoAd.onClose(res => {
// 用户点击了【关闭广告】按钮
// 小于 2.1.0 的基础库版本,res 是一个 undefined
if (this.videoCallBackInst != null && this.videoEndCallBack != null) {
if (res && res.isEnded || res === undefined) {
// 正常播放结束,可以下发游戏奖励
console.log('正常播放结束,可以下发游戏奖励');
this.videoEndCallBack.call(this.videoCallBackInst, true);
this.httpIns.statLog(common.enumtype.LogIds.LOG_PLAY_VIDEO_END);
}
else {
// 播放中途退出,不下发游戏奖励
console.log('播放中途退出,不下发游戏奖励');
this.videoEndCallBack.call(this.videoCallBackInst, false);
this.httpIns.statLog(common.enumtype.LogIds.LOG_PLAY_VIDEO_CLOSE);
}
this.videoCallBackInst = null;
this.videoEndCallBack = null;
}
})
}
报错截图如下
游戏二维码
测试帐号 xingkong__33
onclose加的监听数量太多了,每次显示都新加了一个啊,也加在初始化里啊