# 10. Banner广告

# (1) API说明

ATBannerAd:

API 参数 说明
loadBannerAd string placementid,Dictionary<string,string> extra 加载广告
showBannerAd string placementid,string position 初次显示广告 postion:ATBannerAdLoadingExtra.kATBannerAdShowingPisitionTop(显示在屏幕顶部)ATBannerAdLoadingExtra.kATBannerAdShowingPisitionBottom(显示在屏幕底部)
hideBannerAd string placementid 隐藏广告
showBannerAd string placementid 显示 已经隐藏的广告
cleanBannerAd string placementid 移除广告

# (2) 加载Banner广告

使用以下代码加载Banner广告:


public void loadBannerAd()
{
    if(bannerCallback == null) {
        bannerCallback = new BannerCallback();
        ATBannerAd.Instance.setListener(bannerCallback);
    }

    Dictionary<string, object> jsonmap = new Dictionary<string,object>();
    //配置Banner要展示的宽度,高度,是否使用pixel为单位(只针对iOS有效,Android 使用pixel为单位)
    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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

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

# (2) 展示Banner广告

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

  1. 用预定义的位置来展示banner广告 把banner展示在屏幕底部
ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, ATBannerAdLoadingExtra.kATBannerAdShowingPisitionTop);
1

把banner展示在屏幕底部

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

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

public void showBannerAd() 
{
    ATRect arpuRect = new ATRect(0,70, screenWidth, 100, true);
    ATBannerAd.Instance.showBannerAd(mPlacementId_native_all, arpuRect);
}
1
2
3
4
5

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

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

public void removeBannerAd() 
{
    ATBannerAd.Instance.cleanBannerAd(mPlacementId_native_all);
}
1
2
3
4

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

public void hideBannerAd() 
{
    ATBannerAd.Instance.hideBannerAd(mPlacementId_native_all);
}
1
2
3
4

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

public void reshowBannerAd()
{
    ATBannerAd.Instance.showBannerAd(mPlacementId_native_all);
}
1
2
3
4

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

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

# (4) 实现Banner的监听器

要获得有关各种Banner广告事件(加载成功/失败,展示和点击)的通知,只需定义一个ATBannerAdListener接口的实现类:

class BannerCallback : ATBannerAdListener
{
    public void onAdAutoRefresh(string unitId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdAutoRefresh :" +  unitId);
    }

    public void onAdAutoRefreshFail(string unitId, string code, string message)
    {
        Debug.Log("Developer callback onAdAutoRefreshFail : "+ unitId + "--code:" + code + "--msg:" + message);
    }

    public void onAdClick(string unitId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdClick :" + unitId);
    }

    //v5.5.3之后不再执行该回调,转到onAdCloseButtonTapped方法回调
    public void onAdClose(string unitId)
    {
        Debug.Log("Developer callback onAdClose :" + unitId);
    }

    public void onAdImpress(string unitId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdImpress :" + unitId);
    }

    public void onAdLoad(string unitId)
    {
        Debug.Log("Developer callback onAdLoad :" + unitId);
    }

    public void onAdLoadFail(string unitId, string code, string message)
    {
        Debug.Log("Developer callback onAdLoadFail : : " + unitId + "--code:" + code + "--msg:" + message);
    }

    public void onAdCloseButtonTapped(string unitId, ATCallbackInfo callbackInfo)
    {
        Debug.Log("Developer callback onAdCloseButtonTapped :" + unitId);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43