Skip to main content

开屏广告

一、注意事项#

  • 禁止在onAdLoadFailed 回调中执行广告加载的方法,否则会引起多个无用请求。
  • 开发者可以参考Demo中的splash.dart集成。

二、集成步骤#

1、请求广告#

//设置参数
Map customMap = {};
Map extraMap = TPSplashManager.createSplashExtraMap(customMap: customMap);
//加载广告
TPSplashManager.loadSplashAd("在TP平台创建的广告位ID", extraMap: extraMap);

参数说明

unitId:TradPlus后台创建的广告位ID#
  • 开发者需正确填入,例如:unitId设置前后有空格,均会导致广告因拉不到配置而请求失败。
extraMap:额外参数#
  • customMap 用于流量分组相关设置,详细请参考流量分组
  • localParams:设置本地参数。个别广告平台特殊需要设定的参数。

2、检查是否有可用广告#

  • 开发者在监听到onAdLoaded回调后调用。
  • 建议开发者展示广告前,调用该API判断是否有可用广告,有广告再调用show方法
  • true表示有可用广告,false表示暂时无可用广告
bool isAdReady = TPSplashManager.splashAdReady("unitId");

3、进入广告场景#

TPSplashManager.entrySplashAdScenario("unitId", sceneId: "sceneId");

参数说明

sceneId :广告场景ID#
  • 开发者可在在TradPlus后台创建,位置如下:应用管理--广告场景。
  • 具体如何调用,可以参考广告场景的调用时机和用途说明
  • 进入广告场景时传入sceneId,展示广告时也需传入sceneId,否则会影响统计。

4、展示广告#

Flutter插件版本 v1.0.4+,iOS v8.5.0+, Android v8.8.0.1+

开屏广告支持原生广告混用,开发者可以通过可选参数传入自定义原生模版名称。

  • 安卓
//layoutName 可选参数 (v1.0.4+)
return TPSplashViewWidget(unitId,layoutName:"layoutName");
  • iOS
//展示广告时传入sceneId(v1.1.3+)
TPSplashManager.showSplashAd(unitId,sceneId: "splash_sceneId");
//className 可选参数 (v1.0.4+)
TPSplashManager.showSplashAd(unitId,className: "className",sceneId: "splash_sceneId");

5、监听回调#

参数说明

基础回调监听#

addListener() {
listener = TPSplashAdListener(
// 加载成功
// V1.1.2 回调机制优化,开发者主动调用一次load才会对应回调一次loaded,不调用不回调
onAdLoaded: (adUnitId, adInfo) {
},
//加载失败
onAdLoadFailed: (adUnitId, error) {
},
//广告展示成功
onAdImpression: (adUnitId, adInfo) {
},
//广告展示失败
onAdShowFailed: (adUnitId, adInfo, error) {
},
//广告点击
onAdClicked: (adUnitId, adInfo) {
},
//广告关闭
onAdClosed: (adUnitId, adInfo) {
},
//单层广告源加载失败
oneLayerLoadFailed: (adUnitId, adInfo, error) {
},
)
//设置监听
TPSplashManager.setSplashListener(listener!);
}

广告源维度回调监听(可选)#

...
//广告源维度监听回调(可选)
onAdStartLoad: (adUnitId, adInfo) {
// 每次调用load方法时返回的回调
},
onBiddingStart: (adUnitId, adInfo) {
// Bidding开始加载
},
onBiddingEnd: (adUnitId, adInfo, error) {
// Bidding加载结束
// 配置Bidding广告源可监听
// 测试时,通过error获取bidding加载失败的原因
},
oneLayerStartLoad: (adUnitId, adInfo) {
// 每层waterfall向三方广告源发起请求前,触发的回调
},
oneLayerLoaded: (adUnitId, adInfo) {
// 后台配置多个广告源,每个广告源加载成功后会都会回调一次
},
onAdAllLoaded: (adUnitId, isSuccess) {
// 广告位的状态
// isSuccess 返回true,表示此次请求,有广告源加载成功
// isSuccess 返回false,表示此次请求,广告位adUnitId下所有广告源加载失败
},
onAdIsLoading: (adUnitId) {
// V1.0.5 新增
// 调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
}
onZoomOutStart: (String adUnitId, Map adInfo)
{
//展示点睛
}
onZoomOutEnd: (String adUnitId, Map adInfo)
{
//关闭点睛
}
onSkip: (String adUnitId, Map adInfo)
{
//跳过
}
...

下载监听 快手、穿山甲支持(可选)(仅Android支持)#

...
onDownloadStart: (adUnitId, totalBytes, currBytes, fileName, appName) {
// 开始下载回调
// totalBytes:文件总大小(单位:字节)
// currBytes:当前已下载的大小(单位:字节)
// fileName:文件名称
// appName:文件对应的应用名称
},
onDownloadUpdate: (adUnitId, totalBytes, currBytes, fileName, appName, progress) {
// 下载进度更新回调
// progress:下载进度
},
onDownloadPause: (adUnitId, totalBytes, currBytes, fileName, appName) {
// 暂停下载回调
},
onDownloadFinish: (adUnitId, totalBytes, currBytes, fileName, appName) {
// 下载完成回调
},
onDownloadFail: (adUnitId, totalBytes, currBytes, fileName, appName) {
// 下载失败回调
},
onInstall: (adUnitId, totalBytes, currBytes, fileName, appName) {
// Apk安装完成回调
}
...