this.wxAd = wx.createRewardedVideoAd({
adUnitId: 'adunit-xxx',
multiton: true,
});
try {
await this.wxAd.show()
.catch(async (e) => {
console.log('first try show failed', e);
if (/is\sshowed/.test(e.errMsg)) {
console.warn(`
NOTE: 在多实例状态下,show会抛出错误,但广告仍能拉起,感觉是微信广告巨大的Bug
{errMsg: "can't invoke show() while other video-ad is showed"}
已提issue至社区
`);
return false;
}
await this.wxRewardedVideoAd.load()
return true;
})
.then((shouldShow: boolean) => {
if (!shouldShow) return;
this.wxRewardedVideoAd.show();
});
} catch(e) {
console.error('拉起广告失败', e);
this.showToast('拉起广告失败');
}
谢谢官方回答,问题已解决,是我个人使用问题。
问题出在写cocos按钮事件监听时,用的是clickEvents api的push方法,弹窗两次onEnable,注册了两个相同的点击事件。导致第二次点击时,调了两次wxAd.show方法,第一次show成功拉起广告;第二次show导致报错;
解决方案是: 避免点击事件重复绑定:按钮点击事件从cocos editor中拖拽注册。
同一id的激励视频广告不需要开启了多实例模式
【腾讯文档】激励广告组件拉起问题反馈
https://docs.qq.com/doc/DTU10SWFqTU5nSHVJ