跳至主要內容

大约 4 分钟

概述

沉浸式视频流广告是一种以视频内容为核心的广告形式,广告素材以全屏视频方式呈现,可结合声音、动画、交互按钮等元素,为用户提供高度沉浸的视觉体验。广告在内容流中以自然的方式插入播放,确保用户观看体验的连贯性与广告信息的有效传达

广告加载和展示

使用SAAllianceAdSdk.getSAAllianceAdManager().createSAAllianceAd()

调用loadSADrawAd(SAAllianceAdParams params, SADrawAdLoadListener listener)进行广告加载;

方法说明
加载Draw视频流广告

参数说明是否必填
广告参数必填
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;
        }
    }

上次编辑于: