跳至主要內容

开屏广告

大约 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)
上次编辑于: