信息流广告
简介
开发者获取广告物料,自定义组装嵌入列表的原生广告。
接口说明
方法 | 说明 |
UMUnionSdk.loadFeedAd(UMAdConfig, AdLoadListener<UMNativeAD>) | 请求信息流广告 |
UMNativeAD
方法 | 说明 |
getTitle() | 获取广告标题 |
getContent() | 获取广告描述 |
getIconUrl() | 获取图标素材地址 |
getImageUrl() | 获取大图素材地址 |
getVideoUrl() | 获取视频素材地址 |
bindView(Context, UMNativeLayout, List<View> clickViews) | 绑定视图与点击区域 |
bindVideoView(UMVideoView) | 绑定视频播放视图 |
setVideoAutoplay(boolean) | 设置视频是否自动播放 |
setAdEventListener(AdEventListener) | 设置事件回调 |
getImageWidth() | 获取大图宽度 |
getImageHeight() | 获取大图高度 |
getIconWidth() | 获取图标宽度 |
getIconHeight() | 获取图标高度 |
getVideoWidth() | 获取视频宽度 |
getVideoHeight() | 获取视频高度 |
getECPM() | 获取出价(单位分),PD模式返回-1 |
isValid() | 广告是否有效 |
isVideo() | 是否为视频广告 |
getVideoPlayer() | 获取视频播放器 |
setVideoListener(VideoListener) | 设置视频播放回调 |
win(Double highestLossPrice) | 竞胜后调用,用于优化广告填充 |
loss(Double winPrice, LossReason reason) | 竞败后调用,用于优化广告填充 |
AdEventListener
方法 | 说明 |
onExposed() | 曝光回调 |
onClicked(View view) | 点击回调 |
onError(int code, String message) | 错误回调 |
AdRenderListener
扩展 AdLoadListener,区分广告填充和素材渲染两个阶段,适用于被聚合场景:
方法 | 说明 |
onSuccess(AdType, UMNativeAD) | 广告请求成功,可用于比价 |
onFailure(AdType, String) | 广告请求失败 |
onRenderSuccess(AdType, UMNativeAD) | 素材加载完成,可以展示 |
onRenderFailure(AdType, String) | 素材渲染失败 |
调用示例
UMAdConfig config = new UMAdConfig.Builder().setSlotId("your_slot_id").build();
UMUnionSdk.loadFeedAd(config, new UMUnionApi.AdRenderListener<UMNativeAD>() {
@Override
public void onSuccess(UMUnionApi.AdType type, UMNativeAD display) {
// 广告请求成功,可用于比价
}
@Override
public void onFailure(UMUnionApi.AdType type, String message) { }
@Override
public void onRenderSuccess(UMUnionApi.AdType type, UMNativeAD display) {
// 素材加载完成,可以展示
display.setAdEventListener(new UMUnionApi.AdEventListener() {
@Override public void onExposed() { }
@Override public void onClicked(View v) { }
@Override public void onError(int code, String msg) { }
});
UMNativeLayout adLayout = (UMNativeLayout) View.inflate(ctx, R.layout.ad_layout, null);
List<View> clickViews = new ArrayList<>();
clickViews.add(adLayout);
if (display.isVideo()) {
UMVideoView videoView = adLayout.findViewById(R.id.ad_video);
videoView.setVisibility(View.VISIBLE);
display.bindVideoView(videoView);
} else {
ImageView image = adLayout.findViewById(R.id.ad_image);
image.setVisibility(View.VISIBLE);
// 使用 display.getImageUrl() 加载图片
}
((TextView) adLayout.findViewById(R.id.ad_title)).setText(display.getTitle());
((TextView) adLayout.findViewById(R.id.ad_content)).setText(display.getContent());
display.bindView(ctx, adLayout, clickViews);
}
@Override
public void onRenderFailure(UMUnionApi.AdType type, String message) {
// 素材渲染失败
}
});