穿山甲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步的加载一样。

注意广告显示有延迟,注意在调用代码的时候自己添加显示和隐藏标识来控制。

posted @ 2022-05-20 15:41  威少小二orz  阅读(1332)  评论(0编辑  收藏  举报