收藏
回答

两个页面都有激励广告时,页面间跳转和返回会导致无法正常加载激励广告

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.createRewardedVideoAd 工具 和微信无关,微信开工发具也是最新的几个版本都有此问题 所有版本都有此问题,和版本无关

在微信开发工具中创建两个页面,两个页面都只需要分别在页面中增加激励广告的定义、初始化、显示逻辑即可,其它第一个页面,在激励广告观看成功关闭后跳转到另外一个页面,并在另一个页面也点击观看激励广告,无法正常加载激励广告,并且返回前一页面后,前一页面也再无法正常加载激励广告。在微信开发工具中,问题必现。

有时报: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
回答关注问题邀请回答
收藏

2 个回答

  • 陈宇明
    陈宇明
    2023-03-24

    很棒的解决方案👍

    2023-03-24
    有用
    回复
  • 伟
    2023-03-23

    曾一度怀疑是videoAd定义位置不对,毕竟是定义在page外,这个应该是属于全局变量吧。所以也尝试过将videoAd定义到page内,做为页面周期变量,然后通过this去引用,不过问题依然。

    有没有遇到类似问题的同学,你们是如何解决,父子页面都有激励广告的场景问题的,谢谢!

    2023-03-23
    有用
    回复 4
    • 伟
      2023-03-23
      感觉好像是视频已经从隐藏状态变为了显示状态,只是显示的位置和大小不对,还是在隐藏状态的位置,并未让其正常显示出来
      2023-03-23
      回复
    • 伟
      2023-03-23回复
      经过多种重试,最后找到了一个规避方法。我说说我这边的规避方法,官方的激励视频分为三个部分,定义变量、初始化视频、显示视频,三块代码。如果按照官方建议,那么当在父子页面都存在激励视频时,必然会出现问题,会导致子页面无法正常加载并且返回父页面后父页面也无法正常加载。我采用的规避方法,其实也非常简单,就是将:初始化视频和显示视频的代码,全部放在显示代码逻辑里面,不要拆开,不过这样用户体验上稍微差一点点,毕竟初始化正常要1-2秒,好在这个规避后问题不再存在。
      2023-03-23
      回复
    • 伟
      2023-03-23
      如果其它页面信息可有可有,最根本性的问题解决思路,就是跳转页面时使用reLaunch,不使用navigateTo,这样隐藏的激励广告也就不存在了,只留下了和当前页面相关的内容,不受其它外部任何影响,自然问题就没有了
      2023-03-23
      1
      回复
    • C.C.
      C.C.
      03-24回复
      哎,2024问题依旧存在。。。大佬有代码瞅瞅,伪代码也行,非常感谢
      03-24
      回复
登录 后发表内容