- 多实例模式下,调用同一id的不同广告实例,第二个实例show时会抛错,但却能够拉起广告,影响开发判断
// 背景介绍:小游戏开发,广告实例在Modal弹窗组件中,会被多个地方调用 // 开启了 multiton 多实例,但是在第二个地方调用组件时,调用ad.show()会抛出错误,但广告仍能拉起 // 而且错误对象e没有errCode只有errMsg,导致处理异常时只能用正则匹配错误信息,规避这种特殊情况(因为广告正常拉起来了) // 请官方答复,这种hack调用很没安全感!! // 预期: // 已经开启了多实例模式,不应该在第二个实例调用show时报错; // 要么抛出错误,不要拉起广告; this.wxAd = wx.createRewardedVideoAd({ adUnitId: 'adunit-xxx', multiton: true, // 开启了多实例模式 }); try { await this.wxAd.show() .catch(async (e) => { console.log('first try show failed', e); // {"errMsg": ""} no errCode !! // wired behavior under multiton, have to hack... 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('拉起广告失败'); }
2021-09-02 - 开发者工具上,激励广告API的onError回调参数不包含errCode,与文档不符
[图片] [图片]
2021-09-02