媒体渲染 开屏
媒体渲染开屏广告为用户在进入 App 时展示的全屏广告,开发者可以拿到广告的物料信息进行拼接
注意:针对 2.0.0 以前升级用户
广告接口有变动,请详细对照以下接入说明
开始之前
在开始集成开屏广告之前,您需要完成以下步骤:
- 在京媒合作平台创建开发者账号,添加应用,然后申请并配置一个媒体渲染开屏的代码位。
将 Android SDK 集成到您的开发项目并完成 SDK 初始化操作
注意❗️❗❗️ 2.1.0及后续版本,区分了京东渲染与媒体渲染代码位,如采用媒体渲染接口加载广告,需传入媒体渲染代码位
- 注意❗️❗❗️ 2.1.0及后续版本,SDK不再做入参尺寸比例的强校验,接入方传入宽高为期望广告大小,为更好展示广告,建议传入的宽高符合京媒平台广告样式
Step 1. 初始化 JADNative 对象
京媒SDK 触发一系列事件来通知您 Splash 广告加载、展示等活动。首先,需要创建 JADNative 对象,设置广告位对应的JADSlot配置。
JADSlot slot = new JADSlot.Builder()
.setSlotID(slotID)
.setImageSize(expressImageWidth, expressImageHeight)
.setType(JADSlot.AdType.SPLASH)
.setSkipTime(5)
.build();
mJADNative = new JADNative(slot);
请求参数:
字段定义 | 字段名称 | 字段类型 | 备注 |
---|---|---|---|
slotID | 代码位ID | String | 必选参数 |
imageSize | 图片宽/高 | float | 必选参数,期望图片的size,单位dp |
adType | 广告类型 | int | 必选参数, JADSlot.AdType.SPLASH |
skipTime | 跳过时间 | int | 可选参数, 开屏右上角倒计时的时间,单位为s,默认值为 5 |
Step 2. 请求广告
调用 loadAd 方法来请求广告,设置并实现监听事件的 JADNativeLoadListener。
mJADNative.loadAd(new JADNativeLoadListener() {
/**
* 广告数据加载成功
*/
@Override
public void onLoadSuccess() {
// TODO:广告数据返回上报
}
/**
* 广告数据加载失败
*
* @param code 错误码
* @param error 错误描述信息
*/
@Override
public void onLoadFailure(int code, String error) {
}
});
Step 3. 渲染广告
广告数据加载成功后,通过获取广告数据自行渲染广告视图
List<JADMaterialData> adList = mJADNative.getDataList();
渲染广告的数据 JADMaterialData:
public interface JADMaterialData {
/**
* 获取广告标题
*/
String getTitle();
/**
* 获取广告描述信息
*/
String getDescription();
/**
* 获取广告图片
*/
List<String> getImageUrls();
/**
* 获取广告来源,如:JD
*/
String getResource();
/**
* 获取广告资源类型
*/
String getMediaStyle();
/**
* 获取规格集
*/
int getMediaSpecSetType();
/**
* 获取创意交互方式
*/
int getEventInteractionType();
}
SDK提供摇一摇和滑动组件:
// 摇一摇组件,返回大小为(100dp,100dp)的View,当View attachedToWindow时,动画start,detachedFromWindow时,动画end
View shakeAnimationView = JADNativeWidget.getShakeAnimationView(this);
// 滑动组件,返回大小为(matchParent,120dp)的View,当View attachedToWindow时,动画start,detachedFromWindow时,动画end
View swipeAnimationView = JADNativeWidget.getSwipeAnimationView(this);
Step 4. 注册View进行监听
注册绑定点击和关闭的 View,具体的View 开发者可以根据自身的需求而定。
//可点击View列表
List<View> clickList = new ArrayList<>();
if (mInteractionType == JADSlot.InteractionType.NORMAL) {
clickList.add(imageView);
} else if (mInteractionType == JADSlot.InteractionType.SHAKE) {
clickList.add(shakeAnimationView);
} else if (mInteractionType == JADSlot.InteractionType.SWIPE) {
clickList.add(swipeAnimationView);
}
// 关闭View列表
View skipBtn = adView.findViewById(R.id.jad_splash_skip_btn);
List<View> closeList = new ArrayList<>();
closeList.add(skipBtn);
// 注册需要监听的视图,包括整体的广告View、点击视图列表、关闭视图列表
mJADNative.registerNativeView(this, adView, clickList, closeList,
new JADNativeSplashInteractionListener() {
/**
* 广告曝光
*/
@Override
public void onExposure() {
// TODO 广告曝光上报
}
/**
* 广告倒计时,
*
* @param time 倒计时当前数字
*/
@Override
public void onCountdown(int time) {
// TODO:关于倒计时视图刷新可在这个回调中进行操作
}
/**
* 广告点击
*/
@Override
public void onClick(View view) {
// TODO 广告点击上报
}
/**
* 广告关闭
*/
@Override
public void onClose(View view) {
}
});
Step 5. 销毁广告
建议您在销毁之前调用destroy方法来释放 JADNative 对象。
if (mJADNative != null) {
mJADNative.destroy();
mJADNative = null;
}
移除广告view
可在Activity跳转到其他Activity时把广告控件上的广告视图remove掉 mSplashContainer.removeAllViews();
获取广告价格
// 获取竞价价格,单位:分
int price = mJADNative.getJADExtra().getPrice();
参考Demo
媒体渲染开屏广告请参考Demo中的 NSplashAdActivity 示例
注意事项:
1、请在 mJADNative.registerNativeView()
之后再将广告试图添加到广告容器中,否则会影响曝光,具体可参照Demo。
2、开发则需要在 onLoadFailure(),onClose() 回调函数做跳转主页面的处理。
3、需要开发者在开屏Activity中onStop()中做一个标记 在onResume()中做跳转主页面的逻辑处理,跳转之后开屏控件上的view移除。
@Override
protected void onResume() {
super.onResume();
//判断是否该跳转到主页面
if (mForceGoMain) {
openMainActivity();
}
}
@Override
protected void onStop() {
super.onStop();
mForceGoMain = true;
}
4、开屏宽度必须为屏幕宽度,高度需不小于屏幕宽度的50%,且展示时长不小于1s, 否则不能有效曝光。