开屏广告
大约 4 分钟
开屏广告
概述
开屏广告是应用程序启动时呈现的全屏广告,开发者只需遵循标准接入流程即可展示广告视图。开屏广告在应用启动时显示,持续5秒后自动关闭。用户也可以点击“跳过”快速进入主界面,或点击广告了解更多信息。
开屏广告页面跳转逻辑
开屏广告展示在开发者所传入的视图容器中,开屏广告关闭事件后的页面跳转逻辑,需要开发者根据开屏广告生命周期回调事件自行处理。
当一些广告在点击后,跳转到应用内落地页或应用外,倒计时不会暂停,此时会收到 sa_splashDidTimeOver 的回调,不能直接在 sa_splashDidTimeOver 回调中进行下一步操作。
开发者需要维护一个 bool 值 canJump 来表示能否跳转,当 activity.onPause 的时候将其置为 false;当 activity.onResume 将其置为 true。
在 next 方法被调用时,如果为 false,将其置为 true。
具体做法参考以下示例代码
场景举例:
场景1
点击广告-跳转应用外或应用内落地页-activity.onPause-[canJump = false]-收到sa_splashDidTimeOver回调-next-[canJump = true]-返回应用-onResume-next
场景2
应用进入后台-activity.onPause-[canJump = false]-收到sa_splashDidTimeOver回调-next-[canJump = true]-返回应用-onResume-next
场景3
应用进入后台-activity.onPause-[canJump = false]-返回应用-onResume-[canJump = true]-收到sa_splashDidTimeOver回调-next
SASplashAd 方法介绍
方法名 | 说明 |
---|---|
构造方法,传参说明: | |
设置开屏广告大小,开发者需要自定义底部视图时,开屏广告非全屏展示需要传入,单位dp | |
加载广告 | |
展示广告,传入开屏广告所在的视图容器 开屏广告视图会被添加到传入的 | |
销毁广告 | |
设置开屏广告生命周期回调事件监听,在 | |
预先加载的开屏广告在需要展示时可能已经失效,需要调用此方法进行判断。 | |
获取价格,单位为 分 | |
获取本次瀑布流加载过程中失败的代码位信息 | |
获取本次广告填充的代码位信息 |
SASplashAd.InteractionListener
void sa_splashShowFail(AdError var1); | 展示失败 |
void sa_splashDidShow(); | 展示成功 |
void sa_splashDidClick(); | 广告点击 |
void sa_splashDidSkip(); | 点击跳过 |
void sa_splashDidTimeOver(); | 播放完毕 |
void sa_splashLifeTime(long var1); | 开屏倒计时 |
void sa_splashDidExposure(); | 开屏广告曝光 |
请求开屏示例
// 页面跳转逻辑处理
// 一些广告在点击后,跳转到应用内落地页或应用外后,倒计时不会暂停,此时会收到sa_splashDidTimeOver的回调,所以不能直接在sa_splashDidTimeOver回调中进行下一步操作。
// 此时需要维护一个bool值canJump来表示能否跳转,当activity.onPause的时候将其置为false;当activity.onResume将其置为true。
// 在next方法被调用时,如果为false,将其置为true。
// 场景举例1:点击广告-跳转应用外或应用内落地页-activity.onPause-[canJump = false]-收到sa_splashDidTimeOver回调-next-[canJump = true]-返回应用-onResume-next
// 场景举例2: 应用进入后台-activity.onPause-[canJump = false]-收到sa_splashDidTimeOver回调-next-[canJump = true]-返回应用-onResume-next
// 场景举例3: 应用进入后台-activity.onPause-[canJump = false]-返回应用-onResume-[canJump = true]-收到sa_splashDidTimeOver回调-next
private boolean canJump = false;
@Override
protected void onResume() {
super.onResume();
if (canJump) {
next();
}
canJump = true;
}
@Override
protected void onPause() {
super.onPause();
canJump = false;
}
SASplashAd splashAd;
private void loadSplashView(String sposId) {
splashAd = new SASplashAd(splashactivity, postId, new SABaseAd.LoadListener() {
@Override
public void onLoaded() {
// show
splashAd.showInContainer(mSplashContainer);
}
@Override
public void onError(AdError adError) {
next();
}
});
splashAd.setInteractionListener(new SASplashAd.InteractionListener() {
@Override
public void sa_splashShowFail(AdError adError) {
next();
}
@Override
public void sa_splashDidShow() {
canJump = true;
}
@Override
public void sa_splashDidClick() {
}
@Override
public void sa_splashDidSkip() {
next();
}
@Override
public void sa_splashDidTimeOver() {
next();
}
@Override
public void sa_splashLifeTime(long l) {
}
@Override
public void sa_splashDidExposure() {
}
});
//如果开屏需要自定义底部logo需要传入广告容器尺寸,否则不需要传广告容器尺寸
splashAd.setAdSize(new SAAdSize(width,height));
splashAd.loadAd();
}
private void next() {
if (canJump) {
// 页面跳转
} else {
canJump = true;
}
}
SAAdSize 说明
width | 容器的宽(dp) |
---|---|
height | 容器的高(dp) |