穿山甲GroMore广告—(Banner广告)——Android_Unity广告系列文章03
穿山甲GroMore广告—(Banner广告)——Android_Unity广告系列文章03
穿山甲GroMore聚合版本:2022.04.14。
对于Banner广告,2022.04.14版本的GroMore聚合版本里是有一点问题的,代码控制上有一些问题,我就写出调用方式和相应的BUG并做出修正。
首先展示:
Demo中的Banner的展示和加载是写在一个方法中,没有分开。
第1步调用入口为:AdFunctionScript.cs中的FunctionDispatch()方法,ID为:MainListItemId.BANNER_LOAD
第2步:创建Banner广告对象。
GMBannerAd gmBannerAd
安卓层AdManager.java中有一个方法 getBannerAd()
这个方法是在Unity里调用的,在第3步里面。
第3步:设置Adslot,注意每个广告均有一个Adslot,用来设置所显示的广告的参数,比如ID,大小等等,
不同的是有的使用的版本1,为com.bytedance.msdk.api.AdSlot,有的使用的版本2,为com.bytedance.msdk.api.v2.slot,依据Ad的对象需要的参数来定。
Unity层在Android宏下的ABUBannerAd.cs中调用加载和展示与Android交互。
真正的加载在Android层AdManager.java中。
上图中红框圈出来的部分是adSlot,之所以重复了Unity这边的内容,是因为我调整广告尺寸嫌发包麻烦,所以直接在Android层写了一个adSlot,而unity层传过来的adSlot则没有使用,然后因为广告的尺寸以及缩放,你并不能控制,而广告的内容尺寸是属于一个迷,经常使你设置的高宽无效,所以你可以设置为按底对齐,向上自适应。
以上为加载广告,以下说展示。
-------------------------------------------
SDK当在初始化Banner时,会先干掉显示Banner的View,内容在AbuBannerAd.cs中的BannerAdListener类,里面的onAdLoaded的方法。
注意SDK里Banner的BUG在这里了。
BUG1:
BannerAdListener中onAdLoaded方法里调用了removeBannerLayout(),为移除Banner的View,而removeBannerLayout()方法中有一句代码
() => mAdManager.Call<AndroidJavaObject>("removeViewFromRootView", ABUAdSDK.GetActivity(), bannerViewLayout));
从代码里可以看出我们调用了安卓层的removeViewFromRootView方法,看你注意到没,Android层这个方法为Void类型,而我们unity调用的则是带返回类型,导致调不到安卓层的这个方法,所以将Unity中这句改为
() => mAdManager.Call("removeViewFromRootView", ABUAdSDK.GetActivity(), bannerViewLayout));
这里就修正了Banner广告不能正常移除的BUG,记住你移除的时候不要干掉BannerAd,只需要干掉View就行了。
BUG2:
当你修正BUG1后,会引发逻辑错误,因为在之前的BUG写法上,你移除的时候并没有真正移除,而你修正后,真正的移除了广告的View。
所以在BannerAdListener中的onAdLoaded方法中,你remove后,你还得加回来,需要增加代码initBannerLayout();
BUG3:
在initAndLoadBannerAd方法中,你移除了,再加载回来,但是少了点东西,按照SDK的意思,Banner应该是显示在你所创建的view的一个子view当中,也就是BUG2图中的getBannerView。
所以在initAndLoadBannerAd又需要新增代码如下:
---------------------------------
当你要控制显示和隐藏的时候,你自己写一个CloseBanner方法。
需要显示了再直接加载即可,加载代码如下:
AdFunctionScript.Instance.FunctionDispatch(MainListItemId.BANNER_LOAD);
跟第1步的加载一样。
注意广告显示有延迟,注意在调用代码的时候自己添加显示和隐藏标识来控制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律