Skip to main content

4、横幅广告

一、集成建议#

主要介绍在Android项目中如何集成 TradPlus SDK的横幅广告:

  • (1)banner广告的TPBanner本身是一个view,需要开发者创建后添加到指定位置
  • (2)广告onAdLoaded成功后,TradPlus SDK会自动的把广告内容填充到TPBanner中
  • (3)在TradPlus后台配置自动刷新功能,一次onAdLoaded后,间隔固定的时间SDK内部会自动触发下一次load并在onAdLoaded成功后替换内容。请参考 自动刷新功能使用注意事项集成。
  • (4)开发者调用 closeAutoshow()方法,TP SDK不会自动调用showAd()。需要开发者在监听到onAdLoaded回调后在展示广告的位置执行showAd()

注意事项#

  • (1)禁止在oneLayerLoadFailed 回调中执行广告加载的方法,否则会引起多个无用请求。
  • (2)开发请根据附录1:SDK日志查看与分析错误码、错误信息说明排查广告请求失败的原因
  • (3) 三方轮播(自动刷新)
    • 部分三方源支持轮播功能,如穿山甲、腾讯优量汇等。
    • TP已支持了自动刷新功能,三方轮播能代码控制的均属于关闭状态,有需要可以直接在TP后台设置。

二、TPBanner API说明#

2.1 初始化广告位#

方法说明
TPBanner(Activity activity)仅初始化时调用一次。

2.2 加载、展示广告#

方法说明
closeAutoShow()关闭自动展示(可选) V6.9.5新增API
使用须知:
(1)必须在请求load()前调用;
(2)需要在展示广告的位置调用showAd(),否则广告加载成功后无法展示。
loadAd(String adUnitId)请求广告(方法一)
loadAd(String adUnitId,String sceneId)请求广告并设置广告场景ID(方法二)
使用该方法必须调用entryAdScenario(sceneId)
entryAdScenario(String sceneId)进入广告场景(可选)
广告场景是用来统计进入广告场景的次数和进入场景后展示广告的次数,所以请在准确的位置调用。
showAd()展示广告(可选)
需要和closeAutoShow()一起调用。V6.9.5新增API。注意:Baidu的Banner不支持load()show()分开调用。
  • 参数说明
参数说明
广告位ID adUnitIdTradPlus后台创建。应用管理——添加应用——添加广告位。注意广告类型创建错误会导致广告展示失败,例如用标准原生的广告位去请求激励视频广告。
广告场景ID sceneIdTradPlus后台创建。应用管理—— 广告场景。具体如何使用,请看广告场景的调用时机和用途说明

2.3 其他 API#

方法说明
setVisibility(View.GONE)加载广告成功之后,隐藏。(可选)需要在主线程调用。
setVisibility(View.VISIBLE)隐藏广告后,展示。(可选)需要在主线程调用。
setAutoDestroy(boolean destory)设置不自动释放。默认是true。在TPBanner被remove后会释放广告资源。如果特殊场景需要保存TPBanner继续使用,可以设置false
isOpenAutoRefresh()判断是否开启自动刷新。(可选) V7.1.0.1新增API
onDestroy()释放广告。

2.4 监听回调#

方法说明
setAdListener(BannerAdListener adListener)设置广告监听回调,其中BannerAdListener是需要实现广告事件回调的接口类。
setAllAdLoadListener(LoadAdEveryLayerListener everyLayerListener)设置单个源维度的监听回调(可选)
V6.9.5新增API。其中LoadAdEveryLayerListener是需要实现广告事件回调的接口类。单个源维度是指TP端的一个广告位下配置多个广告源缓存,每个源的回调。
  • BannerAdListener(广告位维度)
方法说明
onAdClicked(TPAdInfo tpAdInfo)广告被点击。
onAdImpression(TPAdInfo tpAdInfo)广告被展示。部分三方源没有该回调。AdColony、AppLovin、Unity Ads 、Mopub、Criteo、MyTarget等无此回调。
onAdClosed(TPAdInfo tpAdInfo)广告被关闭。
onAdLoaded(TPAdInfo tpAdInfo, TPBaseAd tpBaseAd)广告加载成功。
onAdLoadFailed(TPAdError error)广告加载失败。
onAdShowFailed(TPAdError error, TPAdInfo tpAdInfo)广告展示失败。
V7.3.0新增回调参数TPAdError
  • LoadAdEveryLayerListener(可选)(单个源维度)V6.4.5新增API
方法说明
onAdAllLoaded(boolean isSuccess)广告位的状态。loadAd()完毕后用于判断是否有可用广告,true表明有可用广告,false表明没有可用广告。
oneLayerLoadFailed(TPAdError adError, TPAdInfo adInfo)配置多个广告源,每个广告源加载失败后会都会回调一次。
oneLayerLoaded(TPAdInfo adInfo)配置多个广告源,每个广告源加载成功后会都会回调一次。
onLoadAdStart(TPAdInfo tpAdInfo)请求广告后,广告开始加载。
V7.9.0 废弃。
oneLayerLoadStart(TPAdInfo tpAdInfo)每层waterfall 向三方广告源发起请求前,触发的回调。V7.9.0 新增。
onAdStartLoad(String adUnitId)每次调用load方法时返回的回调,包含自动加载等触发时机。V7.9.0 新增。
onBiddingStart(TPAdInfo tpAdInfo)Bidding开始加载。
onBiddingEnd(TPAdInfo tpAdInfo, TPAdError tpAdError)Bidding加载完成。
V7.3.0新增回调参数TPAdError
  • 参数说明
参数说明
TPAdInfoV6.2.4新增API。广告位ID、三方广告平台、ecpm等信息,具体请参考回调信息说明
TPAdErrorV6.2.4新增API。广告请求失败、广告展示失败的错误码、错误信息,具体请参考错误码、错误信息说明

三、Banner尺寸问题#

  • (1)Banner类型默认下发320 * 50 大小,部分广告源开发者可以在后台添加广告源时选择下发的尺寸。例如:Meta支持 320 * 50320 * 90 等的尺寸下发。

  • (2)TP后台选择的尺寸需要和在三方后台申请的比例一致,选择的尺寸不一致时,会出现展示效果的badcase或者加载失败。

  • (3)部分广告源TP支持设置宽高。

  • (4)当代码和后台尺寸同时配置时,优先以代码设置尺寸为准。

  • (5)关于Banner的中显示

    • 代码设置成期望的尺寸
      • 对于可以设置宽高的源,开发者将广告容器设置成期望尺寸,把TPBanner放置在容器的中间即可。
TPBanner tpBanner = new TPBanner(activity);
Map<String, Object> mLocalExtras = new HashMap<>();
mLocalExtras.put("width", 500); // 单位:dp
mLocalExtras.put("height", 250);
tpBanner.setCustomParams(mLocalExtras);
// 请求广告前设置才会生效
tpBanner.loadAd("AdUnitId");
广告源是否支持后台配置多尺寸是否支持设置宽高
MetaYesNo
AdmobYesNo
MopubYesNo
AdColonyYesNo
UnityAdsYesNo
VungleYesNo
AppLovinYesNo
ChartBoostYesNo
腾讯优量汇NoNo
穿山甲国内YesYes
穿山甲海外YesYes
Mintegral国内YesYes
Mintegral海外YesYes(bidding广告位 No)
InmobiNoNo
FyberNoNo
StartAppNoNo
CriteoNoNo
MyTargetYesNo
AppNextYesNo
KidozNoNo
SmaatoYesNo
HuaweiYesNo
BaiduYesNo
A4GYesNo
MimoNoNo

四、三方广告网络特殊设置#

4.1 米盟Mimo Banner 支持缩放#

  • mimo sdk V5.1.7 (TradPlus V7.7.0.1)开始支持
  • 支持等比例缩放。取值(0,1] 默认1,需要开发者在请求广告前设置
// 初始化广告位
TPBanner tpBanner = new TPBanner(activity);
HashMap<String, Object> map = new HashMap<>();
//设置等比例缩放
map.put("mimo_banner_scale", "0.5");
tpBanner.setCustomParams(map);
//请求广告
tpBanner.loadAd("AdUnitId");

五、示例代码#

请参考Banner Demo

// 1、初始化广告位。仅调用一次。
TPBanner tpBanner = new TPBanner(activity);
// 2、布局文件中添加展示广告view
ViewGroup adContainer = findViewById(R.id.ad_container);
adContainer.addView(tpBanner);
// 3、设置广告监听
tpBanner.setAdListener(new BannerAdListener() {
@Override
public void onAdClicked(TPAdInfo tpAdInfo) {}
@Override
public void onAdImpression(TPAdInfo tpAdInfo) {}
@Override
public void onAdLoaded(TPAdInfo tpAdInfo) {}
@Override
public void onAdLoadFailed(TPAdError error) {
Log.i(TAG, "onAdLoadFailed: 加载失败,code :" + error.getErrorCode() + ", msg : " + error.getErrorMsg());
}
@Override
public void onAdClosed(TPAdInfo tpAdInfo) {}
});
// 4、设置每层广告源回调监听 (可选)
tpBanner.setAllAdLoadListener(new LoadAdEveryLayerListener() {...});
// 5、请求广告。广告位ID在TradPlus后台创建。广告加载成功会自动展示在你所添加的布局中。
tpBanner.loadAd("AdUnitId");