Skip to main content

开屏广告

开屏⼴告是用户进入应用时展示的广告页面。加载、展示广告的步骤如下,具体使⽤方式请参考Demo。

创建开屏广告请求#

SplashAdRequest.Builder splashAdBuilder = new SplashAdRequest.Builder();
splashAdBuilder.setTimeOut(5000) // 【可选】 默认值为5000
.setViewSize(width, height) //【必传】展示开屏广告的view宽高,单位像素
.setAdCount(1) //【可选】广告个数,默认1
.setPosId(37057); //【必传】开屏广告位id

参数说明:

参数类型含义
setTimeOut()可选设置超时时间,单位毫秒,默认为5000ms
setViewSize()必传展示开屏广告的view宽高,单位像素。建议: width=屏幕宽,height=屏幕高(全屏) 或 0.8*屏幕高(非全屏)
setAdCount()可选请求的广告个数,默认为1
setPosId()必传开屏广告位id

SplashAd接口说明

public abstract class SplashAd {
/**
* 获取开屏广告view
* @return 广告对象view
*/
public abstract View getSplashView();
/**
* 注册广告互动监听
* @param adListener 广告交互监听
*/
public abstract void registerAdInteractionListener(SplashAdListener adListener);
/**
* 释放广告相关资源和状态,不使用广告时调用
*/
public abstract void destroy();
/**
* 返回开屏广告类型
* @return 开屏广告类型 ,0:图片广告,1:视频广告
*/
public abstract int getAdType();
/**
* 接入方自定义跳过按钮时,调用此方法隐藏Sdk提供的跳过按钮
*/
public abstract void hideSkipButton();
/**
* 广告是否有效, 过期/已曝光等都属于无效广告
*/
public abstract boolean isValid();
/**
* 返回广告请求的requestId
*/
@Override
public abstract String getRequestId();
/**
* 返回广告的创意Id
*/
@Override
public abstract String getCreativeId();
/**
* 返回广告的推广类型:2=下载; 3=网页推广
*/
public abstract int getPromotedType();
/**
* 加载开屏广告
* @param adRequest 广告请求参数
* @param listener 广告加载回调
*/
public static void load(SplashAdRequest adRequest, final SplashAdLoadListener listener) {}
}

请求开屏广告#

调用SplashAd.load(SplashAdRequest adRequest, SplashAdLoadListener listener)方法异步加载开屏广告。adRequest为请求开屏广告的相关参数,listener为广告加载交互回调,其中包含加载广告成功、失败和超时的方法回调。

SplashAd mSplashAd;
//开屏广告加载回调
SplashAd.load(splashAdBuilder.build(), new SplashAd.SplashAdLoadListener() {
@Override
public void onTimeOut() {
Log.e(TAG, "splash ad load timeout");
}
@Override
// 加载失败,err是错误码,msg是描述信息
public void onAdLoadError(int err, String msg) {
Log.e(TAG, "splash ad load err: " + err + " " + msg);
}
@Override
// 加载成功,ad为开屏广告实例
public void onAdLoaded(SplashAd ad) {
Log.i(TAG, "splash ad loaded");
mSplashAd = ad;
// 展示广告
showAd();
}
});

设置广告交互监听#

这非常重要!!!设置广告交互监听涉及到广告计费,必须正确设置对应的可交互广告组件

mSplashAd.registerAdInteractionListener(new SplashAd.SplashAdListener() {
@Override
public void onAdSkip() {
Log.i(TAG, "onAdSkip");
}
@Override
public void onAdShow() {
Log.i(TAG, "onAdShow");
}
@Override
public void onAdClick() {
Log.i(TAG, "onAdClick");
}
@Override
public void onAdClosed() {
Log.i(TAG, "onAdClosed");
}
@Override
public void onAdError(int err, String msg) {
Log.e(TAG, "onAdError err: " + err + " " + msg);
}
/**
* 广告详情页关闭回调,返回交互类型
* 0.未知 1.广告内webView展示详情 3.视频详情页
*/
@Override
public void onAdDetailClosed(int interactionType) {
Log.i(TAG, "onAdDetailClosed, interactionType : " + interactionType);
}
});
回调说明
onAdSkip()广告跳过回调
onAdShow()广告展示回调
onAdClick()广告点击回调
onAdClosed()广告关闭回调
onAdError()广告错误回调
onAdDetailClosed()广告详情页关闭回调

展示开屏广告#

在获取到开屏广告对象后,通过mSplashAd.getSplashView()方法获取开屏广告view,将view添加进布局容器后,即可进行开屏广告展示。

private void showAd() {
View splashView = mSplashAd.getSplashView();
mSplashSplashContainer.removeAllViews();
// 把SplashView 添加到ViewGroup中
mSplashSplashContainer.addView(splashView);
}

销毁开屏广告#

在开屏广告展示完毕后,开发者需要手动调用destroy()方法,以释放相关资源。

@Override
public void finish() {
super.finish();
mSplashAd.destroy();
}

主要API#

com.tencent.klevin.ads.ad.SplashAdRequest.Builder

com.tencent.klevin.ads.ad.SplashAd

方法名说明参数
Builder.setPosId(long posId)配置开屏广告的广告位Id【必须】posId为申请的开屏广告位
Builder.setViewSize(int width, int height)展示开屏广告的view宽高【必须】建议width=屏幕宽,height=屏幕高(全屏) 或 0.8*屏幕高(非全屏)
Builder.setAdCount(int count)配置广告的拉取个数,默认为1,当前可传1或不调用【可选】
Builder.setTimeOut(long waitTime)开屏广告请求超时时间,单位毫秒【可选】默认为5000
Builder.build()构造开屏广告的请求参数
SplashAd.load(SplashAdRequest adRequest, SplashAdLoadListener listener)加载开屏广告adRequest:请求参数SplashAdLoadListener:开屏广告加载回调,加载成功时返回开屏广告实例对象
SplashAd.getSplashView()获取开屏广告view
SplashAd.getAdType()获取开屏广告类型 ,0:图片广告,1:视频广告
SplashAd.registerAdInteractionListener(SplashAdListener adListener)加载广告成功后,在展示广告之前设置广告的交互回调SplashAdListener:开屏广告回调,包含广告展示,点击,错误,关闭,跳过等回调事件。
SplashAd.hideSkipButton()隐藏Sdk提供的跳过按钮
SplashAd.destroy()释放广告相关资源和状态,建议不使用广告时调用
SplashAd.isValid()检查广告是否有效,展示前检查。广告已曝光,已过期均为无效广告。
SplashAd.getPromotedType()返回广告的推广类型:2=下载; 3=网页推广【2.10.1版本新增】
SplashAd.getRequestId()返回广告请求的requestId。【2.11.0版本新增】
SplashAd.getCreativeId()返回广告的创意Id。【2.11.0版本新增】
SplashAd.getECPM()获取ECPM,即千次曝光收益,单位为分。

开屏广告注意事项#

  • 请求开屏广告时,必须传入展示开屏广告view的width和height,单位像素。width建议传入设备屏幕宽度;若要在广告底部添加自身logo,height建议为 0.8*设备屏幕高度,否则直接传入设备屏幕高度。
  • 在请求开屏广告后,展示开屏广告前,开发者需要通过registerAdInteractionListener()设置广告交互监听,这是广告计费与后续页面跳转的基础。
  • 开发者需要在接收到onAdSkip()、onAdClosed()、onAdError()回调时处理跳转应用主页的逻辑,详情请见demo。
  • 开发者可根据自身需要,选择自定义跳过按钮或使用SDK提供的原生按钮。若选择自定义跳过按钮,则需要开发者自行处理广告倒计时及跳过开屏广告等操作。
  • 在开屏广告展示结束时,开发者需调用destroy()释放相关资源。