中文
登录
后可查看全部文档
开发测试/Android集成文档/开屏广告
开屏广告
最近更新 2024-08-02 11:19:52

简介

开屏广告为用户在进入App时展示的全屏广告。开屏广告为一个View,宽高默认为match_parent。注意: 开屏广告view:width =屏幕宽;height需要>=75%屏幕高 ,否则会影响计费。为提高开发者的收入体验,穿山甲4700版本上线新版开屏广告降低开发者的接入成本。

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

重大变化

为提高开发者的收入及接入体验,4700版本开始,开发者需重新接入开屏功能,否则将无法成功请求开屏广告。

接口删除&新增

在创建TTAdNative对象以及创建广告请求AdSlot阶段和之前保持一致,在调用loadSplashAd接口时新增了新的加载开屏接口,新老接口对比以及示例:

SplashAdListener(旧接口)

CSJSplashAdListener(新接口)

/** * 加载失败回调 * * @param code * @param message */ void onError(int code, String message);

//广告物料或素材加载失败或超时回调 void onSplashLoadFail(CSJAdError csjAdError);



//广告渲染失败或超时回调 void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError);



csjAdError.getCode() == 1,物料加载失败

csjAdError.getCode() == 2,素材加载失败

csjAdError.getCode() == 3,渲染失败、渲染超时

/** * 开屏广告加载超时回调 */ void onTimeout();

/** * 广告物料、素材加载失败或超时回调 * 如果媒体想判断是否是超时回调可以通过 csjAdError.getCode() == 23进行判断 * code为23则为超时回调 * @param csjAdError */ void onSplashLoadFail(CSJAdError csjAdError);


/** * 广告渲染失败或超时回调 * 如果媒体想判断是否是超时回调可以通过 csjAdError.getCode() == 23进行判断 * code为23则为超时回调 * @param csjAdError */ void onSplashRenderFail(CSJAdError csjAdError);

/** * 广告加载完成的回调,接入方可以在这个回调中进行渲染 * @param ad 开屏广告接口 */ void onSplashAdLoad(TTSplashAd ad);

/** * 广告渲染回调,接入方可以在这个回调中,调用ad.showSplashView(splashContainerView)进行渲染,也可以自己同个ad对象获取开屏view自己添加到容器进行渲染。 * @param ad 开屏广告接口 */ void onSplashRenderSuccess(CSJSplashAd ad);



//广告物料、素材加载成功回调 void onSplashLoadSuccess();



//更新5700及以上api的onSplashLoadSuccess示例

@Override

public void onSplashLoadSuccess(CSJSplashAd ad) {

}

注意:触发onSplashLoadSuccess(CSJSplashAd ad)回调时机时,建议开发者不要使用getSplashView添加视图,因为此时还暂未渲染成功,建议只参与竞价,统一在渲染成功onSplashRenderSuccess(CSJSplashAd ad) 处 使用showSplashView(Container) 添加视图


开屏广告接口回调变更

TTSplashAd(广告旧接口)

CSJSplashAd(广告新接口)

/** * 获取开屏广告View * * @return */ View getSplashView();

保持一致


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

保持一致

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

/** * 注册开屏阶段回调 * @param splashAdListener */ void setSplashAdListener(SplashAdListener splashAdListener);

/** * 注册Splash广告的下载回调 * @param downloadListener 下载回调监听器 */ void setDownloadListener(TTAppDownloadListener downloadListener);

保持一致

/** * 设置开屏广告不开启倒计时功能、不显示跳过按钮 */ void setNotAllowSdkCountdown();

/** * 设置开屏广告不开启倒计时功能、不显示跳过按钮 */ void hideSkipButton();

/** * 通知sdk开始点睛动画 */ void startClickEye(boolean isSkip);

新接口废弃

/** * 自定义倒计时,通知sdk开始点睛动画 */ void startClickEye();

保持一致

/** * 返回广告额外信息 */ Map<String, Object> getMediaExtraInfo();

保持一致

void renderExpressAd(TTNativeExpressAd.ExpressAdInteractionListener expressAdInteractionListener);

新接口废弃


void splashClickEyeAnimationFinish();

/** * 告知sdk展示点睛 * @param viewGroup */ void showSplashClickEyeView(ViewGroup viewGroup);

/** * 开屏点睛接口 */ void setSplashClickEyeListener(ISplashClickEyeListener listener);

/** * 注册点睛阶段回调 * @param clickEyeListener */ void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);

/** * 开屏卡片接口 */ void setSplashCardListener(ISplashCardListener listener);

/** * 注册卡片阶段回调 * @param cardListener */ void setSplashCardListener(SplashCardListener cardListener);

int[] getSplashClickEyeSizeToDp();

保持一致


/** * 获取点睛view * @return */ View getSplashClickEyeView();


/** * 获取卡片view * @return */ View getSplashCardView();


/** * 告知sdk展示开屏 * @param viewGroup */ void showSplashView(ViewGroup viewGroup);


/** * 告知sdk展示卡片 * @param viewGroup */ void showSplashCardView(ViewGroup viewGroup, Activity activity);

开屏交互接口变更

AdInteractionListener(旧接口)

SplashAdListener(新接口)

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

//开屏点击 void onSplashAdClick(CSJSplashAd ad);


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


//开屏展示 void onSplashAdShow(CSJSplashAd ad);

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

//开屏关闭(开屏跳过以及倒计时结束统一收敛到该接口) void onSplashAdClose(CSJSplashAd ad, int closeType);


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

开屏接入-[V4700+]接口使用说明

创建广告对象及请求参数

  • 创建TTAdNative对象
复制
  • 创建广告请求AdSlot
复制
  • 参数说明

参数

含义

setCodeId()

平台创建的代码位ID 以8开头9位数字

setImageAcceptedSize()

单位:px

setExpressViewAcceptedSize()

单位:dp

setAdLoadType()

用于标注此次的广告请求用途为预加载(当做缓存)还是实时加载,方便后续为开发者优化相关策略,传入参数值:UNKNOWN//未知,默认值,开发者未传入,或当此次加载的广告用途未知时使用PRELOAD//预加载,当此次加载的广告用途为预加载(当作缓存)时使用LOAD//实时加载,当此次加载的广告用途为实时播放时使用

  • CSJSplashAd广告接口说明
复制

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

请求广告

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

复制

注意: 展示开屏有两种方式一是 调用ad.getSplashView()获取到SplashView,将SplashView添加到开屏容器中,二是调用ad.showSplashView(mSplashContainer) 传入开屏容器进行展示。

  • CSJSplashAdListener说明

回调

说明

onSplashLoadSuccess()

广告物料、素材加载成功回调

onSplashLoadSuccess(CSJSplashAd ad)

5700及以上新增,开屏素材加载成功回调

onSplashLoadFail(CSJAdError csjAdError)

广告物料或素材加载失败或超时回调

onSplashRenderSuccess(CSJSplashAd ad)

广告渲染回调,接入方可以在这个回调中,调用ad.showSplashView(splashContainerView)进行渲染 

onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError)

广告渲染失败或超时回调 返回的错误码(csjAdError)表示广告请求失败的原因,详情请见链接

广告交互监听器

复制
  • SplashAdListener说明

回调

说明

onSplashAdClick

广告点击回调

onSplashAdShow

广告展示回调

onSplashAdClose

广告关闭回调(倒计时结束和点击跳过)

移除广告view

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

接入须知

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

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

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

④开发者要在onSplashLoadFail()、onSplashRenderFail()、onSplashAdClose()回调及CSJSplashAd广告为null时开发者做跳转主页面的处理,跳转之后开屏控件上的view移除。

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

触发onSplashLoadSuccess(CSJSplashAd ad)回调时机时,建议开发者不要使用getSplashView添加视图,因为此时还暂未渲染成功,建议只参与竞价,统一在渲染成功onSplashRenderSuccess(CSJSplashAd ad) 处 使用showSplashView(Container) 添加视图。

复制

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

自定义跳过按钮,使用点睛功能说明见https://www.csjplatform.com/support/doc/6109033c7d600700463e0b26

资源

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

开屏接入-[V<4700]接口使用说明

创建广告对象及请求参数

  • 创建TTAdNative对象
复制
  • 创建广告请求AdSlot
复制
  • 参数说明

参数

含义

setCodeId()

平台创建的代码位ID 以8开头9位数字

setImageAcceptedSize()

单位:px

setExpressViewAcceptedSize()

单位:dp

setAdLoadType()

用于标注此次的广告请求用途为预加载(当做缓存)还是实时加载,方便后续为开发者优化相关策略,传入参数值:UNKNOWN//未知,默认值,开发者未传入,或当此次加载的广告用途未知时使用PRELOAD//预加载,当此次加载的广告用途为预加载(当作缓存)时使用LOAD//实时加载,当此次加载的广告用途为实时播放时使用

  • TTSplashAd广告接口说明
复制

请求广告

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

复制
  • SplashAdListener说明

回调

说明

onError()

广告请求失败回调 返回的错误码(code)表示广告请求失败的原因,详情请见链接

onTimeout()

开屏广告加载超时回调

onSplashAdLoad()

广告加载完成的回调,接入方可以在这个回调中进行展示

广告交互监听器

复制
  • AdInteractionListener说明

回调

说明

onAdClicked()

广告点击回调

onAdShow()

广告展示回调

onAdSkip()

广告跳过回调

onAdTimeOver()

广告倒计时结束回调

接入须知

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

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

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

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

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

复制

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

自定义跳过按钮,使用点睛功能说明见https://www.csjplatform.com/support/doc/6109033c7d600700463e0b26

资源

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

点睛接入

  • 开屏点睛支持的类型:图片、视频
  • 开屏点睛的交互方式:在5s开屏呈现的过程中用户点击右上角的“跳过”或5s曝光结束后开屏图片或者视频将收缩到APP内右下角的小视窗继续展示。

穿山甲的Demo中提供了两种类型的点睛示例:

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

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

主要API-[V4700+]接口预览

  • 穿山甲CSJSplashAd中为支持开屏点睛新增以下接口:

方法名

方法介绍

showSplashClickEyeView(ViewGroup viewGroup)

该方法需要开发者在点睛动画结束时,主动调用通知穿山甲去做点睛view的改变逻辑。

setSplashClickEyeListener(SplashClickEyeListener clickEyeListener)

通过将监听传递给穿山甲,穿山甲在合适的时机触发SplashClickEyeListener的各个接口方法,通知给开发者做不同操作。

int[] getSplashClickEyeSizeToDp()

穿山甲传递给开发者的点睛View的推荐尺寸,建议开发者先使用该值去确定最终点睛View的大小。

View getSplashClickEyeView()

可以通过该方法获取点睛的view

  • 穿山甲点睛SplashClickEyeListener接口:

方法名

方法介绍

onSplashClickEyeReadyToShow()

当穿山甲满足开屏点睛条件时触发,开发者可以在该回调中开始展示点睛动画。

onSplashClickEyeClose()

当穿山甲关闭点睛view时触发,开发者可以在该方法中做些资源回收,关闭开屏的操作。

onSplashClickEyeClick()


  • Demo新增开屏点睛动画AnimationCallBack接口 :

当执行点睛动画时回调以下方法

方法介绍

animationStart(int animationTime)

开始执行开屏点睛动画时调用,animationTime为点睛动画的执行时间,开发者可以自己定义。

animationEnd()

点睛动画执行完成后调用

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

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

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

主要API-[V<4700]接口预览

  • 穿山甲TTSplashAd中为支持开屏点睛新增3个接口:(4700之前版本)

方法名

方法介绍

splashClickEyeAnimationFinish()

该方法需要开发者在点睛动画结束时,主动调用通知穿山甲去做点睛view的改变逻辑。

setSplashClickEyeListener(ISplashClickEyeListener listener)

通过将监听传递给穿山甲,穿山甲在合适的时机触发ISplashClickEyeListener的各个接口方法,通知给开发者做不同操作。

int[] getSplashClickEyeSizeToDp()

穿山甲传递给开发者的点睛View的推荐尺寸,建议开发者先使用该值去确定最终点睛View的大小。

  • 穿山甲新增ISplashClickEyeListener接口:(4700之前版本)

方法名

方法介绍

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之间的开屏动画数据传递。


本篇目录
联系我们