插屏广告
主要介绍在项目中如何集成 TradPlus SDK的插屏:
一、注意事项
- 禁止在
onAdLoadFailed
回调中执行广告加载的方法,否则会引起死循环。 - 禁止在
onAdLoaded
回 调中直接执行广告展示的方法。SDK有广告过期自动补充功能。如果在onAdLoaded
回调中执行showInterstitialAd ()
,开发者会无法精准控制广告展示的时机。 - 开发者可以参考Demo中的interstitial.dart集成
二、集成步骤
1、请求广告
//配置参数extraMap
Map customMap = {};//流量分组
Map localParams = {};//local自定义Map,仅Android支持
Map extraMap = TPInterstitialManager.createInterstitialExtraMap(
customMap: customMap,
localParams: localParams);
//请求广告
TPInterstitialManager.loadInterstitialAd("在TP平台创建的广告位ID", extraMap: extraMap);
参数说明
unitId:TradPlus后台创建的广告位ID
- 开发者需正确填入,例如:unitId设置前后有空格,均会导致广告因拉不到配置而请求失败。
extraMap:额外参数
- customMap:设置流量分组相关属性参数
- localParams:设置本地参数。个别广告平台特殊需要设定的参数。
2、检查是否有可用广告
- 开发者在监听到onAdLoaded回调后调用。
- 建议开发者展示广告前,调用该API判断是否有可用广告,有广告再调用show方法
- true表示有可用广告,false表示暂时无可用广告
- 当调用
interstitialAdReady
返回false时,sdk会重新请求广告,无需开发者再次调用load方法。
bool isReady = await TPInterstitialManager.interstitialAdReady("unitId");
3、进入广告场景
TPInterstitialManager.entryInterstitialAdScenario("unitId", sceneId: "sceneId");
参数说明
sceneId :广告场景ID
- 开发者可在在TradPlus后台创建,位置如下:应用管理--广告场景。
- 具体如何调用,可以参考广告场景的调用时机和用途说明。
- 进入广告场景时传入sceneId,展示广告时也需传入sceneId,否则会影响统计。
4、展示广告
TPInterstitialManager.showInterstitialAd("unitId",sceneId: "sceneId");
5、监听回调
参数说明
- adInfo:广告位ID、三方广告平台、ecpm等信息,具体请参考回调信息说明。
- error:广告请求失败、广告展示失败的错误信息,具体请参考错误码、错误信息说明。
基础回调监听
listener = TPInterstitialAdListener(
onAdLoaded: (adUnitId, adInfo) {
// 广告加载成功
// 不可以在此回调中,调用show方法展示广告
// V1.1.2 回调机制优化,开发者主动调用一次load才会对应回调一次loaded,不调用不回调
},
onAdLoadFailed: (adUnitId, error) {
// 广告加载失败
// 不可以在此回调中,重新调用load方法请求广告,会导致多个无效请求
},
onAdImpression: (adUnitId, adInfo) {
// 广告展示
},
onAdShowFailed: (adUnitId, adInfo, error) {
// 广告展示失败(部分广告支持)
},
onAdClicked: (adUnitId, adInfo) {
//广告被点击
},
onAdClosed: (adUnitId, adInfo) {
//广告被关闭
},
oneLayerLoadFailed: (adUnitId, adInfo, error) {
// 广告源加载失败
// 不可以在此回调中,重新调用load方法请求广告,会导致多个无效请求
// 测试时,开发者可监听该回调,通过error获取每个广告平台加载失败的原因
}
);
//设置监听
TPInterstitialManager.setInterstitialListener(listener!);
广告源维度回调监听(可选)
...
//广告源维度监听回调(可选)
onAdStartLoad: (adUnitId, adInfo) {
// 每次调用load方法时返回的回调
},
onBiddingStart: (adUnitId, adInfo) {
// Bidding开始加载
},
onBiddingEnd: (adUnitId, adInfo, error) {
// Bidding加载结束
// 配置Bidding广告源可监听
// 测试时,通过error获取bidding加载失败的原因
},
oneLayerStartLoad: (adUnitId, adInfo) {
// 每层waterfall向三方广告源发起请求前,触发的回调
},
oneLayerLoaded: (adUnitId, adInfo) {
// 后台配置多个广告源,每个广告源加载成功后会都会回调一次
},
onVideoPlayStart: (adUnitId, adInfo) {
// 视频播放开始(部分广告源支持)
},
onVideoPlayEnd: (adUnitId, adInfo) {
// 视频播放结束(部分广告源支持)
},
onAdAllLoaded: (adUnitId, isSuccess) {
// 广告位的状态
// isSuccess 返回true,表示此次请求,有广告源加载成功
// isSuccess 返回false,表示此次请求,广告位adUnitId下所有广告源加载失败
},
onAdIsLoading: (adUnitId) {
// V1.0.5 新增
// 调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
}
...