菜单

Banner广告集成说明

1. 接入流程建议

  1. 启动应用时通过ATBannerAd#loadBannerAd来执行加载广告
  2. 广告加载成功后首次展示时,执行ATBannerAd#showBannerAd(string placementid,string position)展示广告
  3. 如果需要隐藏广告,可执行ATBannerAd#hideBannerAd;隐藏后需要重新展示,需要执行ATBannerAd#showBannerAd(string placementid)
  4. 可通过Taku后台广告位-高级设置,配置刷新时间以开启自动刷新功能

2. API说明

ATBannerAd:

API参数说明
loadBannerAdstring placementid,Dictionary加载广告
setListenerATBannerAdListener listener设置监听回调接口(5.9.51版本之后废弃)设置监听器的方式具体参考: Banner广告事件设置说明
showBannerAdstring placementid,string position初次显示广告
postion:ATBannerAdLoadingExtra.kATBannerAdShowingPisitionTop(显示在屏幕顶部)
ATBannerAdLoadingExtra.kATBannerAdShowingPisitionBottom(显示在屏幕底部)
checkAdStatusstring placementid(v5.7.22新增)获取当前广告位的状态(JSON字符串):
1、isLoading:是否正在加载
2、isReady:是否有广告缓存(与hasAdReady作用相同)
3、AdInfo:当前优先级最高的广告缓存信息(参考ATCallbackInfo说明
getValidAdCachesstring placementid(v5.7.54新增)获取加载成功的全部广告缓存信息(JSON字符串)
(参考ATCallbackInfo说明
hideBannerAdstring placementid隐藏广告
showBannerAdstring placementid显示 已经隐藏的广告
cleanBannerAdstring placementid移除广告

3. 加载Banner广告

使用以下代码加载Banner广告

public void loadBannerAd()
{
   ATBannerAd.Instance.client.onAdLoadEvent += onAdLoad;          ATBannerAd.Instance.client.onAdLoadFailureEvent +=onAdLoadFail;
   ATBannerAd.Instance.client.onAdImpressEvent += onAdImpress;
   ATBannerAd.Instance.client.onAdAutoRefreshEvent += onAdAutoRefresh;
   ATBannerAd.Instance.client.onAdAutoRefreshFailureEvent += onAdAutoRefreshFail;
   ATBannerAd.Instance.client.onAdClickEvent += onAdClick;
   ATBannerAd.Instance.client.onAdCloseEvent += onAdCloseButtonTapped;    

    Dictionary jsonmap = new Dictionary();
    //配置Banner要展示的宽度,高度,是否使用pixel为单位(只针对iOS有效,Android 使用pixel为单位),注意不同平台的横幅广告有一定限制,例如配置的穿山甲横幅广告640*100,为了能填充完屏幕宽,计算高度H = (屏幕宽 *100)/640;那么在load的extra的size为(屏幕宽:H)。
    ATSize bannerSize = new ATSize(this.screenWidth, 100, true);
    jsonmap.Add(ATBannerAdLoadingExtra.kATBannerAdLoadingExtraBannerAdSizeStruct, bannerSize);

    //v5.6.5新增,只针对Admob的自适应Banner
    jsonmap.Add(ATBannerAdLoadingExtra.kATBannerAdLoadingExtraInlineAdaptiveWidth, bannerSize.width);
    jsonmap.Add(ATBannerAdLoadingExtra.kATBannerAdLoadingExtraInlineAdaptiveOrientation, ATBannerAdLoadingExtra.kATBannerAdLoadingExtraInlineAdaptiveOrientationCurrent);

    ATBannerAd.Instance.loadBannerAd(mPlacementId_native_all, jsonmap);
}

请继续阅读以了解如何获得有关Banner广告事件的通知,例如加载成功/失败,展示和点击。

4. 展示Banner广告

目前可以用两种方法来展示banner广告。

4.1 用预定义的位置来展示banner广告

1)把banner展示在屏幕顶部

ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, ATBannerAdLoadingExtra.kATBannerAdShowingPisitionTop);

2)把banner展示在屏幕底部

ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, ATBannerAdLoadingExtra.kATBannerAdShowingPisitionBottom);

当使用预定义位置来展示banner广告的时候,AnyThinkSDK已经考虑了刘海屏等Safe Area相关空白区域了。

4.2 用ATRect来展示banner广告

public void showBannerAd() 
{
    // 请跟load广告时传入的size的宽和高一致,按需求设置x、y轴坐标。
    ATRect arpuRect = new ATRect(0,70, screenWidth, 100, true);
    ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, arpuRect);
}

传递给ATRect类的构造函数的末尾参数表示是否使用像素(只针对iOS有效)。 例如,在iPhone 6上,如果分别为x,y,宽度和高度分别传递30、120、300、450,则在iPhone 7上传递给Objective-C代码的实际值将为15、60、150、225 这些值将是10、40、100、150; 也就是说,最终值将决定于目标设备的屏幕比例。

当用到 场景 功能时:

public void showBannerAd()
{
    Dictionary jsonmap = new Dictionary();
    jsonmap.Add(AnyThinkAds.Api.ATConst.SCENARIO, showingScenarioID);
    ATBannerAd.Instance.showBannerAd(mPlacementId_banner_all,     ATBannerAdLoadingExtra.kATBannerAdShowingPisitionBottom, jsonmap);
    //ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, arpuRect, jsonmap);
}

如果需要,请使用以下代码从屏幕上移除Banner:

public void removeBannerAd() 
{
    ATBannerAd.Instance.cleanBannerAd(mPlacementId_native_all);
}

如果您只想暂时隐藏 Banner(而不是从屏幕上移除),请在此处使用代码:

public void hideBannerAd() 
{
    ATBannerAd.Instance.hideBannerAd(mPlacementId_native_all);
}

隐藏Banner后,可以使用以下代码重新显示它:

public void reshowBannerAd()
{
    ATBannerAd.Instance.showBannerAd(mPlacementId_native_all);
}

注意: 请注意,此处的showBannerAd方法不接受rect参数,这与您首次显示Banner广告时不同。

移除Banner广告和隐藏Banner广告的区别在于,从屏幕上移除Banner广告时也会破坏它(这意味着在再次显示之前,必须先加载Banner广告),而隐藏Banner只需调用showBannerAd方法即可重新显示以前隐藏的Banner广告不传递ATRect参数

5. 实现Banner事件监听器(注意:仅在V5.951版本以上支持)

回调信息详情请查看回调信息说明

使用以下代码实现多个监听器

        //广告加载成功
        ATBannerAd.Instance.client.onAdLoadEvent += onAdLoad;
        //广告加载失败
        ATBannerAd.Instance.client.onAdLoadFailureEvent += onAdLoadFail;
        //广告展示成功
        ATBannerAd.Instance.client.onAdImpressEvent += onAdImpress;
        //广告自动刷新成功
        ATBannerAd.Instance.client.onAdAutoRefreshEvent += onAdAutoRefresh;
        //广告自动刷新失败
        ATBannerAd.Instance.client.onAdAutoRefreshFailureEvent += onAdAutoRefreshFail;
        //广告被点击
        ATBannerAd.Instance.client.onAdClickEvent += onAdClick;
        //广告关闭
        ATBannerAd.Instance.client.onAdCloseEvent += onAdCloseButtonTapped;      

进阶监听设置

        // 广告源开始加载
        ATBannerAd.Instance.client.onAdSourceAttemptEvent += startLoadingADSource;
        // 广告源加载完成
        ATBannerAd.Instance.client.onAdSourceFilledEvent += finishLoadingADSource;
        // 广告源加载失败
        ATBannerAd.Instance.client.onAdSourceLoadFailureEvent += failToLoadADSource;
        // 广告源开始bidding
        ATBannerAd.Instance.client.onAdSourceBiddingAttemptEvent += startBiddingADSource;
        // 广告源bidding成功
        ATBannerAd.Instance.client.onAdSourceBiddingFilledEvent += finishBiddingADSource;
        // 广告源bidding失败
        ATBannerAd.Instance.client.onAdSourceBiddingFailureEvent += failBiddingADSource;

方法定义参数如下代码(注意 : 方法名可参考以下代码或者自定义方法名,但参数必须一致

    //sender 为广告类型对象,erg为返回信息
    //加载广告
    //广告自动刷新成功
    public void onAdAutoRefresh(object sender,ATAdEventArgs erg)
    {
        Debug.Log("Developer callback onAdAutoRefresh :" + erg.placementId );
    }
    //广告自动刷新失败
    public void onAdAutoRefreshFail(object sender,ATAdErrorEventArgs erg )
    {
        Debug.Log("Developer callback onAdAutoRefreshFail : "+ erg.placementId );
    }
    //广告被点击
    public void onAdClick(object sender,ATAdEventArgs erg)
    {
        Debug.Log("Developer callback onAdClick :" + erg.placementId);
    }

    //广告展示成功
    public void onAdImpress(object sender,ATAdEventArgs erg)
    {
        Debug.Log("Developer callback onAdImpress :" + erg.placementId);
    }
    //广告加载成功
    public void onAdLoad(object sender,ATAdEventArgs erg)
    {
        Debug.Log("Developer callback onAdLoad :" + erg.placementId);
    }
    //广告加载失败
    public void onAdLoadFail(object sender,ATAdErrorEventArgs erg )
    {
        Debug.Log("Developer callback onAdLoadFail : : " + erg.placementId + "--code:" + erg.code + "--msg:" + erg.message);
    }
    //广告关闭按钮被点击
    public void onAdCloseButtonTapped(object sender,ATAdEventArgs erg)
    {
        Debug.Log("Developer callback onAdCloseButtonTapped :" + erg.placementId);
    }

      // v5.8.10 新增广告源层级回调
      // 广告源开始加载
    public void startLoadingADSource(object sender,ATAdEventArgs erg){
        Debug.Log("Developer startLoadingADSource------");
    }
      // 广告源加载完成
        public void finishLoadingADSource(object sender,ATAdEventArgs erg){
        Debug.Log("Developer finishLoadingADSource------");
    }
      // 广告源失败
        public void failToLoadADSource(object sender,ATAdEventArgs erg){
        Debug.Log("Developer failToLoadADSource------");
    }
      // 广告源开始bidding
        public void startBiddingADSource(object sender,ATAdEventArgs erg){
               Debug.Log("Developer startBiddingADSource------");
    }
      // 广告源bidding成功
        public void finishBiddingADSource(object sender,ATAdEventArgs erg){
        Debug.Log("Developer finishBiddingADSource------");
    }
      // 广告源bidding失败
        public void failBiddingADSource(object sender,ATAdEventArgs erg){
        Debug.Log("Developer failBiddingADSource------");
    }

6. 旧版实现Banner的监听器 (注意:仅在V5.9.51版本以下使用,新版本已废弃)

要获得有关各种Banner广告事件(加载成功/失败,展示和点击)的通知,只需定义一个ATBannerAdListener接口的实现类:(注意:对于Android来说,所有回调方法均不在Unity的主线程)

class BannerCallback : ATBannerAdListener
{
    //广告自动刷新成功
    public void onAdAutoRefresh(string placementId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdAutoRefresh :" +  placementId);
    }
    //广告自动刷新失败
    public void onAdAutoRefreshFail(string placementId, string code, string message)
    {
        Debug.Log("Developer callback onAdAutoRefreshFail : "+ placementId + "--code:" + code + "--msg:" + message);
    }
    //广告被点击
    public void onAdClick(string placementId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdClick :" + placementId);
    }

    //v5.5.3之后不再执行该回调,转到onAdCloseButtonTapped方法回调
    public void onAdClose(string placementId)
    {
        Debug.Log("Developer callback onAdClose :" + placementId);
    }
    //广告展示成功
    public void onAdImpress(string placementId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdImpress :" + placementId);
    }
    //广告加载成功
    public void onAdLoad(string placementId)
    {
        Debug.Log("Developer callback onAdLoad :" + placementId);
    }
    //广告加载失败
    public void onAdLoadFail(string placementId, string code, string message)
    {
        Debug.Log("Developer callback onAdLoadFail : : " + placementId + "--code:" + code + "--msg:" + message);
    }
    //广告关闭按钮被点击
    public void onAdCloseButtonTapped(string placementId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdCloseButtonTapped :" + placementId);
    }

      // v5.8.10 新增广告源层级回调
      // 广告源开始加载
    public void startLoadingADSource(string placementId, ATCallbackInfo callbackInfo){
        Debug.Log("Developer startLoadingADSource------");
    }
      // 广告源加载完成
        public void finishLoadingADSource(string placementId, ATCallbackInfo callbackInfo){
        Debug.Log("Developer finishLoadingADSource------");
    }
      // 广告源失败
        public void failToLoadADSource(string placementId,ATCallbackInfo callbackInfo,string code, string message){
        Debug.Log("Developer failToLoadADSource------");
    }
      // 广告源开始bidding
        public void startBiddingADSource(string placementId, ATCallbackInfo callbackInfo){
               Debug.Log("Developer startBiddingADSource------");
    }
      // 广告源bidding成功
        public void finishBiddingADSource(string placementId, ATCallbackInfo callbackInfo){
        Debug.Log("Developer finishBiddingADSource------");
    }
      // 广告源bidding失败
        public void failBiddingADSource(string placementId,ATCallbackInfo callbackInfo,string code, string message){
        Debug.Log("Developer failBiddingADSource------");
    }
}

注: 您在本节中看到的代码段摘自我们Demo的bannerScene.cs demo project.


上一个
全自动加载插屏广告
下一个
原生广告集成说明
最近修改: 2025-05-30Powered by