概述
沉浸式视频流广告是一种以视频内容为核心的广告形式,广告素材以全屏视频方式呈现,可结合声音、动画、交互按钮等元素,为用户提供高度沉浸的视觉体验。广告在内容流中以自然的方式插入播放,确保用户观看体验的连贯性与广告信息的有效传达
广告加载和展示
使用SAAllianceAdSdk.getSAAllianceAdManager().createSAAllianceAd()
调用loadSADrawAd(SAAllianceAdParams params, SADrawAdLoadListener listener)进行广告加载;
| 参数 | 说明 | 是否必填 |
|---|
| 广告参数 | 必填 |
| Draw视频流广告加载结果回调 | 必填 |
| | |
|---|
| | |
| setExpressViewAcceptedWidth(int width) | | |
| setExpressViewAcceptedHeight(int height) | | |
| | |
| | |
|
| |
| 方法 | 说明 |
|---|
| onDrawAdLoad(SADrawAd ad) | 加载成功, |
| 加载失败,code 错误码,message 错误信息 |
| 广告素材加载成功 |
加载获取到的激励视频广告实例,用于生命周期监听、视频状态监听、获取价格等
| 方法 | 说明 |
|---|
| void setDrawAdInteractionListener(SADrawAdInteractionListener listener); | 设置生命周期监听,在调用方法之前设置 |
| void setDrawAdVideoListener(SADrawAdVideoListener listener); | 设置视频状态监听,在调用方法之前设置 |
| void render(); | 开始渲染DrawView |
| 获取广告价格,单位:分 |
| 销毁广告 |
SADrawAdInteractionListener生命周期监听说明
| 方法 | 说明 |
|---|
| void onAdClick() | 广告点击回调 |
| void onAdShow() | 广告开始展示 |
| void onRenderFail(int code, String msg) | 渲染失败code错误码 msg 错误信息 |
| void onRenderSuccess(View view) | 渲染成功可以将返回的view添加到容器内进行展示 |
SADrawAdVideoListener视频状态监听说明
| 方法 | 说明 |
|---|
| void onVideoProgressChange(long current, long duration) | current播放进度,duration视频时长 |
| void onVideoError(int errorCode, String errorMsg) | errcode视频播放错误码,errorMsg视频播放错误信息 |
| void onVideoLoad() | 视频加载成功 |
| void onVideoStartPlay() | 视频开始播放 |
| void onVideoPause() | 视频播放暂停 |
| void onVideoComplete() | 视频播放完成 |
广告请求示例
private void loadDrawAd(String sposId, boolean isMute ,View adContainer) {
SAAllianceAdParams params = new SAAllianceAdParams();
params.setPosId(sposId);//必选
params.setExpressViewAcceptedWidth(DpUtils.px2dp(adContainer.getWidth(), this));//必选
params.setExpressViewAcceptedHeight(DpUtils.px2dp(adContainer.getHeight(), this));//必选
params.setEnableShake(true);//可选
params.setMute(isMute);//可选
SAAllianceAd saAllianceAd = SAAllianceAdSdk.getSAAllianceAdManager().createSAAllianceAd(this);//SplashListActivity.this);
saAllianceAd.loadSADrawAd(params, new SADrawAdLoadListener() {
@Override
public void onDrawAdLoad(SADrawAd saDrawAd) {
if (saDrawAd == null) {
return;
}
drawAd = saDrawAd;
Log.d("YTDemo", "DrawAD|加载成功: " + saDrawAd.getAdInfo().getUrl());
//生命周期监听器
}
@Override
public void onError(int code, String message) {
Log.d("YTDemo", "DrawAD|加载失败: " + code + " - " + message);
}
@Override
public void onResourceLoad() {
Log.d("YTDemo", "DrawAD|onResourceLoad");
}
});
}
展示广告
private void showDrawAd(SADrawAd drawAd) {
if (drawAd == null) {
Log.d("YTDemo", "没有load请求或者没填充 ...");
return;
}
drawAd.setDrawAdInteractionListener(new SADrawAdInteractionListener() {
@Override
public void onAdClick() {
Log.d("YTDemo", "DrawAD|点击");
}
@Override
public void onAdShow() {
Log.d("YTDemo", "DrawAD|onAdShow");
}
@Override
public void onRenderFail(int code, String msg) {
Log.d("YTDemo", "DrawAD|onRenderFail code:" + code + " msg:" + msg);
}
@Override
public void onRenderSuccess(View view) {
Log.d("YTDemo", "DrawAD|onRenderSuccess");
drawAdView = view;
adContainer.removeAllViews();
if (drawAdView != null) {
adContainer.addView(drawAdView);
} else {
Log.d("YTDemo", "DrawAD|onRenderSuccess 渲染成功,但未返回广告View...");
}
}
});
drawAd.setDrawAdVideoListener(new SADrawAdVideoListener() {
@Override
public void onVideoProgressChange(long current, long duration) {
Log.d("YTDemo", "DrawAD|onVideoProgressChange: current:" + current + " duration" + duration);
}
@Override
public void onVideoError(int errorCode, String errorMsg) {
Log.d("YTDemo", "DrawAD|onVideoError: ");
}
@Override
public void onVideoLoad() {
Log.d("YTDemo", "DrawAD|视频加载成功onVideoLoad: ");
}
@Override
public void onVideoStartPlay() {
Log.d("YTDemo", "DrawAD|onVideoStartPlay: ");
}
@Override
public void onVideoPause() {
Log.d("YTDemo", "DrawAD|onVideoPause: ");
}
@Override
public void onVideoComplete() {
Log.d("YTDemo", "DrawAD|onVideoComplete: ");
}
});
Log.d("YTDemo", "DrawAD|执行开始渲染render");
drawAd.render();
}
private void destroy(){
if (drawAd!=null){
adContainer.removeAllViews();
drawAd.destroy();
drawAd=null;
}
}