logo科技微讯

小程序激励广告报错:can't invoke show() while other video-ad is showed

作者:科技微讯
日期:2023-03-23
📝 笔记

微信小程序展示激励广告报错 can't invoke show() while other video-ad is showed,根据官方的回复,原因是:

同一个激励视频对象调用过展示,但是没有关闭的情况下,会出现这个错误。

根据文档,激励广告的关闭不是开发者所能控制的:

只有在用户点击激励视频广告组件上的关闭广告按钮时,广告才会关闭。开发者不可控制激励视频广告组件的隐藏。

结合以上两段话,可推测用户在没有关闭广告的情况下,又重新触发了广告。

但是,这是怎么做到的?

微信开放社区有开发者表示,当用户通过右滑(沿着屏幕左边边缘往右滑)返回上一页,再重新回到广告页并触发广告时,就会出现这个错误。证据:在这个过程中,RewardedVideoAd.onClose 没有被触发,即广告没有被关闭。

解决这个问题的方法是:在页面 onUnload 中判断广告的 onClose 回调有没有被触发,如果没有触发,就在 onUnload 中调用 RewardedVideoAd.destroy() 销毁广告实例,这相当于间接地强制关闭了广告。这样,当用户重新返回广告页播放广告时,就不会出现 can't invoke show() while other video-ad is showed 的报错了。

激励广告的曝光似乎等于完整观看次数 + 中途关闭次数 + 没看完广告右滑屏幕返回上一页面的次数,即只要播放了广告,无论结果如何,都会统计一次曝光。这是理论上的,事实上后台给出的数据可能只有下发奖励次数的一半,这个现象在社区有不少相关帖子,原因不明,官方的解释总是说后台的数据是所谓的有效曝光,至于什么叫有效曝光,没有解释。

donation赞赏
thumbsup0
thumbsdown0
暂无评论