开屏
开屏广告是一种特殊的广告格式,它在应用软启动或冷启动时显示。
简介
出现在自然端点和过渡段的广告样式,可参考广告源Hisavana支持的广告尺寸9:20,效果如图:
9:20 |
---|
![]() |
构建组件
请在xml中新增TSplashView。
提醒:Hisavana SPLASH_VIEW模式、Mintegral开屏必须在xml中添加View,其他情况只需show的时候添加View即可。
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.hisavana.mediation.ad.TSplashView
android:id="@+id/splash_ad"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
加载广告
请设置相应参数和监听回调。
强烈建议:
- 在广告展示期间,需避免使用相同的广告对象重复发起广告请求。如果需要发起新的广告请求,请创建一个新的广告对象。否则,广告请求将无效,并会通过onError回调返回错误信息;
- 由于部分广告源存在onAdShowError回调偶尔不执行的情况,依赖该回调处理跳转逻辑的应用可能会因此卡在开屏页。为避免此类问题,请在应用的开屏页添加超时机制。例如,若在约 3 秒内未成功展示开屏广告,请自行跳转到下一页面。
// 绑定开屏广告对象
TSplashView tSplashView = findViewById(R.id.splash_ad);
// "splash_id"是开屏广告位ID
TSplashAd tSplashAd = new TSplashAd(this, "splash_id");
// 构建并设置广告请求体
tSplashAd.setRequestBody(
new TAdRequestBody.AdRequestBodyBuild()
.setAdListener(new TAdAlliance())
.build());
// 监听跳过动作
tSplashAd.setOnSkipListener(new TOnSkipListener());
// 加载广告后在设置的等待时间内将最优广告回调返回
tSplashAd.loadAd();
// 示例:'超时机制'
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
// 执行跳转逻辑
}
}, 3000);
// splash跳过动作监听器
private class TOnSkipListener implements OnSkipListener {
@Override
public void onClick() {
SplashAdActivity.this.finish();
Log.i("listener", "skip button click");
}
@Override
public void onTimeReach() {
Log.i("listener", "time reach");
}
}
// 广告监听器,监听广告加载完成(填充)、展示、点击、异常、关闭动作的回调
private static class TAdAlliance extends TAdListener {
// 加载完成回调(适用的广告位:所有广告位)
@Override
public void onLoad() {
// Ad loaded callback
}
// 异常回调(适用的广告位:所有广告位)
@Override
public void onError(TAdErrorCode errorCode) {
// Ad failed callback
}
// 展示回调(适用的广告位:Splash、Interstitial、Banner、Reward)
@Override
public void onShow(int source) {
// Ad show callback
}
// 点击回调(适用的广告位:Splash、Interstitial、Banner、Reward)
@Override
public void onClicked(int source) {
// Ad click callback
}
// 关闭回调(适用的广告位:Splash、Interstitial、Banner、Reward)
@Override
public void onClosed(int source) {
// Ad close callback
}
// 展示失败回调(适用的广告位:所有广告位)
@Override
public void onShowError(TAdErrorCode errorCode) {
// Ad show failed callback
}
}
提醒:source表示广告源,请参考广告源关联表; 比如:此次广告填充展示的是pangle广告,那么source=6。
展示广告
请把开屏广告展示出来。
// 展示开屏广告
tSplashAd.showAd(tSplashView);
/**
* 可选项
* 对于需要统计到达广告场景的应用,可自行设置场景值
* 主要目的是统计当前广告场景利用率,第一个参数自定义场景名称,第二个参数广告数量
*/
String sceneToken = tSplashAd.enterScene("splash_scene_name", 1);
tSplashAd.showAd(tSplashView, sceneToken);
/**
* 可选项
* 允许应用通过添加子布局的方式传入logo和名称(适用场景:Hisavana SPLASH_VIEW模式、Mintegral)
* sdk内部加载子布局渲染底部媒体logo信息,底部区域为手机屏幕高度的20%
*/
View logoLayout = LayoutInflater.from(this).inflate(R.layout.splash_logo_layout, null, false);
tSplashAd.showAd(tSplashView, logoLayout);
效果如图:

销毁广告
请及时回收广告,否则App会发生内存泄漏。
// 退出广告场景后,请销毁该广告对象。
@Override
protected void onDestroy() {
super.onDestroy();
if(tSplashAd != null){
tSplashAd.destroy();
tSplashAd = null;
}
}
其它API
API调用 | 介绍 |
---|---|
tSplashAd.hasAd() | 当前是否有可用广告 |
tSplashAd.resume() | 请在生命周期中调用 |
tSplashAd.pause() | 请在生命周期中调用 |
提醒:添加Mintergral广告源后,当系统的onResume、onPause被调用时,媒体需要主动调用以上两个生命周期回调方法,可以减少Mintergral广告源错误数量的产生。