我说说我这边的规避方法,官方的激励视频分为三个部分,定义变量、初始化视频、显示视频,三块代码。如果按照官方建议,那么当在父子页面都存在激励视频时,必然会出现问题,会导致子页面无法正常加载并且返回父页面后父页面也无法正常加载。我采用的规避方法,其实也非常简单,就是将:初始化视频和显示视频的代码,全部放在显示代码逻辑里面,不要拆开,不过这样用户体验上稍微差一点点,毕竟初始化正常要1-2秒,好在这个规避后问题不再存在。
您没有设置onError函数,该函数用于处理广告拉取的异常。请至少处理两种情况:- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 应该正常,不报错 - 复现路径 必现 - 提供一个最简复现 Demo this.videoAd.load() .then(() => this.videoAd.show()) .catch(err => { console.log(err.errMsg) this.videoAd.load() .then(() => this.videoAd.show()) }) this.videoAd.onClose(res => { // 用户点击了【关闭广告】按钮 // 小于 2.1.0 的基础库版本,res 是一个 undefined if (res && res.isEnded || res === undefined) { // 正常播放结束,可以下发游戏奖励 console.log("正常播放结束,可以下发游戏奖励") this.gameinfo.resetLifeNumber() this.gameinfo.resetView(ctx) } else { // 播放中途退出,不下发游戏奖励 console.log("播放中途退出,不下发游戏奖励") } }) this.videoAd.onError(err => { console.log(err) })
2023-03-23我也遇到了这个问题,也是两个页面都存在激励广告,然后在前一个页面看完广告后,跳转到下一个页面,激励广告无法正常显示,返回前一页面,前一页面的激励广告也无法正常显示,必须重新进入小程序,然后问题又重复。^_^
激励视频api 调用 跳转页面时报错{errMsg: "updateTextView:fail?多个页面有激励视频播放时,加载报错 https://developers.weixin.qq.com/s/EfKL2ym37fdh 隐藏当前页面/销毁当前页面时销毁当前页面的激励广告对象也无法加载,试过全局加载激励广告,也会报错 Uncaught (in promise) {errMsg: "updateTextView:fail 32979 not found"} {errMsg: "no advertisement", errCode: 0} 放全局时报错 Uncaught (in promise) {errMsg: "removeTextView:fail 32871 not found"} 如果单页面不销毁 navigateTo 下一个页面切换时报错 {errMsg: "updateTextView:fail:got 'null' when get view by the given viewId"} 会导致白屏无法加载页面
2023-03-23曾一度怀疑是videoAd定义位置不对,毕竟是定义在page外,这个应该是属于全局变量吧。所以也尝试过将videoAd定义到page内,做为页面周期变量,然后通过this去引用,不过问题依然。 有没有遇到类似问题的同学,你们是如何解决,父子页面都有激励广告的场景问题的,谢谢!
两个页面都有激励广告时,页面间跳转和返回会导致无法正常加载激励广告在微信开发工具中创建两个页面,两个页面都只需要分别在页面中增加激励广告的定义、初始化、显示逻辑即可,其它第一个页面,在激励广告观看成功关闭后跳转到另外一个页面,并在另一个页面也点击观看激励广告,无法正常加载激励广告,并且返回前一页面后,前一页面也再无法正常加载激励广告。在微信开发工具中,问题必现。 有时报:can't invoke show () while other video-ad is showed 有时报:[图片] 还有其它一些莫名其妙的错误。但是不管什么问题,都是由于父子页面都存在激励视频导致且存在页面跳转导致的 // pages/index/index.js // 在页面中定义激励视频广告 let videoAd = null; Page({ data: { }, onLoad() { // 在页面onLoad回调事件中创建激励视频广告实例 if (wx.createRewardedVideoAd) { videoAd = wx.createRewardedVideoAd({ adUnitId: 'adunit-36107ec1bb01edd3' }) videoAd.onLoad(() => {}) videoAd.onError((err) => {}) videoAd.onClose((res) => { if(res.isEnded){ //观看成功跳转到其它页面,此页面中也有观看激励广告的逻辑 wx.navigateTo({ url: '/pages/ad', }) } }) } }, showAd(){ // 用户触发广告后,显示激励视频广告 if (videoAd) { videoAd.show().catch(() => { // 失败重试 videoAd.load() .then(() => videoAd.show()) .catch(err => { console.log('激励视频 广告显示失败') }) }) } }, })
2023-03-23激励广告页面加载时会自动拉起,只是隐藏未显示而已。曝光率 = 呈现给用户的数量/拉起的数量。每次进入到有激励广告的页面,就至少会有一次拉起(看完激励广告后默认还会有一次自动拉起),但是如果在页面中,用户并未触发显示激励广告的显示,那这次拉起,其实就是无意义的,也会影响到曝光率。所以按照微信现在的逻辑,即使是每次激励都显示,曝光率也绝对是低于50%,更何况还有绝大部分是只拉起了激励而未触发激励显示的场景,所以曝光率低是正常的。除非你进入页面前就先显示激励广告,这样曝光率可能会高些。 这是我的理解啊,不知道是否正确,如果有官方的,希望给出官方的理解,给大家解解惑。^_^
激励广告的曝光率为什么那么低?做了一款小游戏,加了激励广告,广告拉取量有几百,曝光量只有20左右,曝光率4%多一点。是客户点了查看广告,但是没看完广告吗?拉取量和曝光量是怎么计算的?
2023-03-23