logo

帮助中心/文档详情/

Android开屏广告

简介

开屏广告: 开屏广告为用户在进入App时展示的全屏广告。开屏广告为一个View,宽高默认为match_parent。
注意: 开屏广告view:width =屏幕宽;height需要>=75%屏幕高 ,否则会影响计费。

支持的广告尺寸:开屏广告的尺寸为开发者请求广告时设置的尺寸,建议设置的请求尺寸传入与展示区域大小保持一致,避免素材变形。

权限

SDK渲染开屏广告: 默认提供
模板渲染开屏广告: 白名单,需要申请开通

请求方法

备注:模板渲染开屏和SDK渲染开屏的广告在请求方式上没有差异,仅是请求参数上的差异。
模板渲染的开屏请求方法中需要设置setExpressViewAcceptedSize参数,SDK渲染开屏广告不需要设置此参数

创建TTAdNative对象

//创建TTAdNative对象,createAdNative(Context context) context需要传入Activity对象
TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(this);

创建广告请求AdSlot

SDK渲染开屏

AdSlot adSlot = new AdSlot.Builder()
        .setCodeId(mCodeId)
        .setImageAcceptedSize(1080, 1920)
        .build();

模板渲染开屏

AdSlot adSlot = new AdSlot.Builder()
        .setCodeId(mCodeId)
        //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看。且仅是模板渲染的代码位ID使用,非模板渲染代码位切勿使用
        .setExpressViewAcceptedSize(expressViewWidth, expressViewHeight)
        .build();

参数说明

参数 含义
setCodeId() 平台创建的代码位ID 以8开头9位数字
setImageAcceptedSize() 设置请求非模板广告素材的尺寸。 单位:px SDK渲染需要设置
setExpressViewAcceptedSize() 设置请求模板广告素材的尺寸 。单位:dp 模板渲染需要设置

TTSplashAd广告接口说明

public interface TTSplashAd {

  /**
   * 得到开屏广告
   *
   * @return
   */
  @NonNull
  View getSplashView();

  /**
   * 得到Splash广告的交互类型
   *
   * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
   */
  int getInteractionType();

  /**
   * 注册Splash广告交互回调
   *
   * @param listener 监听器
   */
  void setSplashInteractionListener(AdInteractionListener listener);

  interface AdInteractionListener {
      /**
       * Splash广告的点击回调
       *
       * @param view Splash广告
       * @param type Splash广告的交互类型
       */
      void onAdClicked(View view, int type);

      /**
       * Splash广告的展示回调
       *
       * @param view Splash广告
       * @param type Splash广告的交互类型
       */
      void onAdShow(View view, int type);

      /**
       * 点击跳过时回调
       */
      void onAdSkip();

      /**
       * 广告播放时间结束
       */
      void onAdTimeOver();
  }
}

请求广告

调用TTAdNative.loadSplashAd(AdSlot adSlot, SplashAdListener listener, int timeOut)异步加载开屏广告。
adslot为请求广告的信息,SplashAdListener为广告加载成功或失败的回调,timeOut为加载开屏广告允许的最长时间(注:建议timeOut > 3500ms)。调用示例如下:

mTTAdNative.loadSplashAd(adSlot, new TTAdNative.SplashAdListener() {
	//请求广告失败
    @Override
    @MainThread
    public void onError(int code, String message) {
        //开发者处理跳转到APP主页面逻辑
    }

	//请求广告超时
    @Override
    @MainThread
    public void onTimeout() {
        //开发者处理跳转到APP主页面逻辑
    }

	//请求广告成功
    @Override
    @MainThread
    public void onSplashAdLoad(TTSplashAd ad) {
        if (ad == null) {
            return;
        }
        //获取SplashView
        View view = ad.getSplashView();
        if (view != null && mSplashContainer != null && !SplashActivity.this.isFinishing()) {
            mSplashContainer.removeAllViews();
            //把SplashView 添加到ViewGroup中,注意开屏广告view:width =屏幕宽;height >=75%屏幕高
            mSplashContainer.addView(view);
            //设置不开启开屏广告倒计时功能以及不显示跳过按钮,如果这么设置,您需要自定义倒计时逻辑
            //ad.setNotAllowSdkCountdown();
        }else {
            //开发者处理跳转到APP主页面逻辑
        }
    }
}, AD_TIME_OUT);

注意: 调用ad.getSplashView()获取到SplashView

SplashAdListener说明

回调 说明
onError() 广告请求失败回调 返回的错误码(code)表示广告请求失败的原因,详情请见链接
onTimeout() 开屏广告加载超时回调
onSplashAdLoad() 广告加载完成的回调,接入方可以在这个回调中进行展示

广告交互监听器

ad.setSplashInteractionListener(new TTSplashAd.AdInteractionListener() {

	//点击回调
    @Override
    public void onAdClicked(View view, int type) {

    }
    
	//展示回调
    @Override
    public void onAdShow(View view, int type) {

    }
    
	//跳过回调
    @Override
    public void onAdSkip() {
      //开发者处理跳转到APP主页面逻辑
    }
    
	//超时倒计时结束
    @Override
    public void onAdTimeOver() {
       //开发者处理跳转到APP主页面逻辑
    }
});

AdInteractionListener说明

回调 说明
onAdClicked() 广告点击回调
onAdShow() 广告展示回调
onAdSkip() 广告跳过回调
onAdTimeOver() 广告倒计时结束回调

开屏点睛

说明

开屏点睛样式需要配合平台一起使用,需要开发者在穿山甲平台上勾选开屏点睛样式后,客户端才可以获取到点睛的预算。
点睛平台创建.png

  • SDK版本要求:穿山甲3600及以上版本。
  • 开屏点睛支持的类型:图片、视频
  • 开屏点睛的交互方式:在5s开屏呈现的过程中用户点击右上角的“跳过”或5s曝光结束后开屏图片或者视频将收缩到APP内右下角的小视窗继续展示。
    点睛效果.gif

接入代码示例:

穿山甲3600及以上版本的Demo中提供了两种类型的点睛示例:

  • 第一种为开屏点睛动画在开屏Activity上展示,适用于主界面和开屏在同一个Activity的场景。
  • 第二种为开屏点睛动画在主界面Activity上展示,适用于主界面和开屏在不同Activity的场景。

具体示例代码请查看SplashActivity,SplashClickEyeManager(主要用于实现开屏点睛动画管理类)

主要API:
  • 穿山甲TTSplashAd中为支持开屏点睛新增3个接口:
方法名 方法介绍
splashClickEyeAnimationFinish() 该方法需要开发者在点睛动画结束时,主动调用通知穿山甲去做点睛view的改变逻辑。
setSplashClickEyeListener(ISplashClickEyeListener listener) 通过将监听传递给穿山甲,穿山甲在合适的时机触发ISplashClickEyeListener的各个接口方法,通知给开发者做不同操作。
int[] getSplashClickEyeSizeToDp() 穿山甲传递给开发者的点睛View的推荐尺寸,建议开发者先使用该值去确定最终点睛View的大小。
  • 穿山甲新增ISplashClickEyeListener接口:
方法名 方法介绍
onSplashClickEyeAnimationStart() 3600版本以及之后版本,当穿山甲满足开屏点睛条件时触发,开发者可以在该回调中开始展示点睛动画。
onSplashClickEyeAnimationFinish() 3600版本以及之后版本,当穿山甲关闭点睛view时触发,开发者可以在该方法中做些资源回收,关闭开屏的操作。
isSupportSplashClickEye(boolean isSupport) 3600版本以及之后版本,当穿山甲满足开屏点睛条件时触发,开发者可以在该方法中保持该boolean值,用于开屏两个activity判断是否需要展示开屏点睛时使用。
  • Demo新增开屏点睛动画AnimationCallBack接口 :
方法名 方法介绍
animationStart(int animationTime) 开始执行开屏点睛动画时调用,animationTime为点睛动画的执行时间,开发者可以自己定义。
animationEnd() 点睛动画执行完成后调用

方法介绍
在开屏的onSplashAdLoad广告拉取成功的回调中,进行初始化开屏相关的方法为:initSplashClickEyeData,该方法主要做两件事:

  • 第一件事为实例化ISplashClickEyeListener接口,将ISplashClickEyeListener实例对象设置给穿山甲。
  • 第二件事是将当前的TTSplashAd和开屏view保持到SplashClickEyeManager单例中方法为setSplashInfo。

该方法用于两个Activity之间的开屏动画数据传递。

移除广告view

可在Activity跳转到其他Activity时把广告控件上的广告视图remove掉
mSplashContainer.removeAllViews();

参考Demo

加载开屏广告具体示例详见Demo中的SplashActivity

开屏广告注意点:

1、模板渲染的开屏请求方法需设置setExpressViewAcceptedSize参数 单位dp。非模板渲染开屏请求方法需设置setImageAcceptedSize参数 单位px 。切记不可使用错误

2、开屏广告加载超时时间建议大于3500ms,最大程度的保证广告的展示率可开屏体验,示例设置了3500ms

3、为了收益最大化所有开屏广告均要实时请求,不可缓存。

4、开发者要在onError()、onTimeout()、onAdSkip()、onAdTimeOver()回调及TTSplashAd广告为null时开发者做跳转主页面的处理,跳转之后开屏控件上的view移除。

5、需要开发者在开屏Activity中onStop()中做一个标记 在onResume()中做跳转主页面的逻辑处理,跳转之后开屏控件上的view移除。

@Override
protected void onResume() {
    //判断是否该跳转到主页面
    if (mForceGoMain) {
        goToMainActivity();
    }
    super.onResume();
}

@Override
protected void onStop() {
    super.onStop();
    mForceGoMain = true;
}

6、如果要在底部添加自身logo,需要缩小的开屏广告的展示区域,此时请求的时候宽和高填写裁剪后宽和高即可,即请求尺寸为屏幕宽*(屏幕高-logo高)

文档内容是否对您有帮助?
联系我们