投放视频广告时,如何快速与第三方播放器兼容?

投放,视频,广告,如何,快速,第三方,播放器,兼容 · 浏览次数 : 200

小编点评

**VAST 广告开发指南** **1. 什么是 VAST?** VAST (Video Advertising Specification) 是一个标准化的 XML 格式,用于描述视频广告的画面和音频信息。它可以被用于各种视频广告平台,包括华为 HMS Ads。 **2. 如何在 Android 中使用 VAST 广告?** 在 Android 中使用 VAST 广告,您可以使用以下步骤: * 在您的 app 的布局文件中添加一个 FrameLayout,用于存放视频播放器。 * 在 FrameLayout 中添加一个 VAST 广告视图。 * 在 VAST 广告视图中添加一个 ProgressBar,用于进度指示。 * 使用 VastAdPlayer 类控制广告播放。 **3. VAST 广告模板 (VAST SDK)** 华为 HMS Ads 提供 VAST SDK,可以帮助您轻松地将 VAST 广告模板转换为 Android 代码。您可以使用 SDK 的各种方法来设置广告参数,例如视频地址、广告时长等。 **4. 示例代码** 以下是一个示例 VAST 广告的代码,展示了如何在 Android 中使用 VAST SDK 创建和播放广告: ```java // VAST 广告模板 String adTemplate = ""; // VAST SDK 创建广告 VastAdPlayer adPlayer = VastAdPlayer.create(this, adTemplate); // 设置广告参数 adPlayer.setVideoUrl("video_url.mp4"); adPlayer.setAdDuration(30); // 启动广告播放 adPlayer.start(); ``` **5. 测试 VAST 广告** 在应用发布前,您需要使用专门的测试广告位 ID 来获取测试广告。测试广告位 ID 可以从华为开发者联盟官网获取。 **6. 其他资源** * VAST 官方文档:华为 HMS Ads 文档 * VAST SDK 示例代码:华为 HMS Ads SDK 示例代码 * VAST 测试广告位 ID:华为开发者联盟官网

正文

新媒体时代,广告样式越来越丰富。相较于传统的图文信息,视频类广告更具有直观性,能够让消费者在了解产品知识和功能的同时加深对产品的印象。

因此在各类网站或App上投放视频类广告是个很好的宣传方式,但广告商们如果想在网站上展示视频广告,必须确保视频广告投放协议与发布渠道的播放器兼容;如果不能兼容,广告商或者视频广告投放平台必须创建不同的响应,来与特定视频播放器兼容。为此,互联网广告署(IAB)开发了视频广告投放模板 (VAST)这种 XML 模式,允许通过视频广告服务器提供流内视频广告,并在多个网站和设备上的视频播放器中播放,不仅解决兼容性问题,还提高了视频广告投放的效率和可扩展性。

为帮助广告商们更好投放广告,华为鲸鸿动能平台提供了HUAWEI VAST SDK的集成,目前仅支持符合VAST协议的线性广告(投放形式为前、中、后贴片广告)。

开发准备

集成SDK

使用VAST协议时需要集成HUAWEI VAST SDK。同时如果您需要使用默认的播放器,请集成HUAWEI Player SDK。

  1. 配置Maven仓地址。

Android Studio的代码库配置在Gradle 插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle 插件版本,选择对应的配置过程。

以7.0版本为例:

a) 打开Android Studio项目级“build.gradle”文件。

b) 添加Maven代码库。

在“buildscript > repositories”中配置Maven仓地址。

buildscript {
    repositories {
        google()
        jcenter()
        // 配置鲸鸿动能SDK的Maven仓地址
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

c) 打开项目级“settings.gradle”文件,配置Maven仓地址。

dependencyResolutionManagement {
    ...
    repositories {
        google()
        jcenter() 
        // 配置鲸鸿动能SDK的Maven仓地址
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

配置网络权限

在targetSdkVersion 28及以上的手机上允许HTTP(S)网络请求,在“AndroidManifest.xml”做以下配置。

<application
    ...
    android:usesCleartextTraffic="true"
    >
    ...
</application>

配置混淆脚本

您编译APK前需要配置混淆配置文件,避免混淆HUAWEI VAST SDK导致功能异常。

打开Android工程应用级根目录下的“proguard-rules.pro”混淆配置文件,加入排除HUAWEI VAST SDK的混淆配置。

-keep class com.huawei.openalliance.ad.** { *; }
-keep class com.huawei.hms.ads.** { *; }

初始化SDK

初始化HUAWEI VAST SDK

集成HUAWEI VAST SDK后,在应用的DemoApplication类中,初始化HUAWEI VAST SDK。

// 当用户同意广告服务获取数据时,调用下面的方法
SdkFactory.userAcceptAdLicense(true);

开发步骤

实现VAST广告

使用默认播放器播放线性广告

播放线性广告可以使用默认的播放器,也可使用您实现的自定义播放器。

  1. 在XML文件中,初始化播放器的布局。示例代码如下:
<FrameLayout
    android:id="@+id/fl_linear_ad"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:background="@android:color/black"
    android:visibility="gone"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true" />
		```
		
2.	生成默认的广告播放控制器,注册线性广告视图。示例代码如下:

private void registerLinearAdView() {
mLinearAdView = findViewById(R.id.fl_linear_ad);
mProgressBar = findViewById(R.id.progress);
VastAdPlayer.getInstance().registerLinearAdView(mLinearAdView, getController());
}

private BaseVideoController getController() {
return mAdConfig.isCustomVideoPlayer() ? new DefaultVideoController(this) : new CustomVideoController(this);
}


3.	请求播放线性广告。示例代码如下:

VastAdPlayer.getInstance().startLinearAd(linearAdSlot, new AdsRequestListener() {
@Override
public void onSuccess(View view, int responseCode) {
}

@Override
public void onFailed(View view, int responseCode) {
}

@Override
public void playAdReady() {
    mLinearAdView.setVisibility(View.VISIBLE);
}

@Override
public void playAdFinish() {
    mLinearAdView.setVisibility(View.INVISIBLE);
}

@Override
public void onBufferStart() {
    mProgressBar.setVisibility(View.VISIBLE);
}

@Override
public void onBufferEnd() {
    mProgressBar.setVisibility(View.INVISIBLE);
}

});


#### 使用自定义播放器播放线性广告

1.	在XML文件中,初始化播放器的布局。示例代码如下:


```

  1. 实现自定义的广告播放器控制器。示例代码如下:
public class CustomVideoController extends BaseVideoController implements VastPlayerListener {
    public CustomVideoController(Context context) {
        this(context, null);
    }
    public CustomVideoController(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public CustomVideoController(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }
    @Override
    public int getLayoutId() {
        return R.layout.activity_video_player;
    }
    private void initView(){
        ...
    }
}
  1. 生成自定义的广告播放器控制器,注册线性广告视图。示例代码如下:
private void registerLinearAdView() {
    mLinearAdView = findViewById(R.id.fl_linear_ad);
    mProgressBar = findViewById(R.id.progress);
    VastAdPlayer.getInstance().registerLinearAdView(mLinearAdView, getController());
}

private BaseVideoController getController() {
    return mAdConfig.isCustomVideoPlayer() ? new DefaultVideoController(this) : new CustomVideoController(this);
}
  1. 请求播放线性广告。示例代码如下:
VastAdPlayer.getInstance().startLinearAd(linearAdSlot, new AdsRequestListener() {
    @Override
    public void onSuccess(View view, int responseCode) {
    }
    @Override
    public void onFailed(View view, int responseCode) {
    }
    @Override
    public void playAdReady() {
        mLinearAdView.setVisibility(View.VISIBLE);
    }
    @Override
    public void playAdFinish() {
        mLinearAdView.setVisibility(View.INVISIBLE);
    }
    @Override
    public void onBufferStart() {
        mProgressBar.setVisibility(View.VISIBLE);
    }
    @Override
    public void onBufferEnd() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
});

播放广告荚

广告荚的播放与线性广告的播放,只在使用自定义播放器请求播放广告步骤4中有区别,请求播放广告荚的示例代码如下:

VastAdPlayer.getInstance().startAdPods(linearAdSlot, new AdsRequestListener() {
    @Override
    public void onSuccess(View view, int responseCode) {
    }
    @Override 
    public void onFailed(View view, int responseCode) {
    }
    @Override
    public void playAdReady() {
        mLinearAdView.setVisibility(View.VISIBLE);
    }
    @Override
    public void playAdFinish() {
        mLinearAdView.setVisibility(View.INVISIBLE);
    }
    @Override
    public void onBufferStart() {
        mProgressBar.setVisibility(View.VISIBLE);
    }
    @Override
    public void onBufferEnd() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
});

测试VAST广告

您需要使用专门的测试广告位ID来获取测试广告,以避免在测试过程中产生无效的广告点击量。测试广告位ID,仅可用于调测广告功能,不可用于广告变现,在应用正式发布前需替换为正式的广告位ID。您应在应用发布前先进入流量变现官网,点击“开始变现”,登录鲸鸿动能媒体服务平台,申请正式的广告位ID并替换测试广告位ID,具体操作详情请参见展示位创建。以下表格中提供了VAST广告的专用测试广告位ID:

下载VAST广告的示例代码并运行,可以看到如下效果图:

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

与投放视频广告时,如何快速与第三方播放器兼容?相似的内容:

投放视频广告时,如何快速与第三方播放器兼容?

新媒体时代,广告样式越来越丰富。相较于传统的图文信息,视频类广告更具有直观性,能够让消费者在了解产品知识和功能的同时加深对产品的印象。 因此在各类网站或App上投放视频类广告是个很好的宣传方式,但广告商们如果想在网站上展示视频广告,必须确保视频广告投放协议与发布渠道的播放器兼容;如果不能兼容,广告商

汽车行业:充分借力数据价值,推动数字化营销链路闭环

当下,汽车行业已慢慢由曾经的增量市场逐步转变为存量市场。更年轻的消费群体偏好、更精准智能的营销投放策略和强势入局的新能源汽车等因素都在推动着汽车行业的不断发展。对于汽车厂商和垂域媒体来说,进行丰富的人群洞察与用户分层,能挖掘更多用户生命周期内的价值。 联合建模,精准拉新 随着电商与短视频的快速发展,

大龄程序员思考

视觉AI很难做 近来一直在从事AI 视觉检测方面的工作,外行人可能觉得挺厉害,实际上这钱挣得基本等于搬砖 近两年以来,行业不景气、制造业利润上不去,那么在这个产业链中,老板就没有余钱来进行升级改造。 老板们是否愿意花钱投入视觉检测,一是老板的认知、二是是否有足够的资金实力; 就算最后,老板有需求,也

墨卡托投影瓦片转换成WGS84投影瓦片

如题,相信任何一个GIS引擎开发者都会遇到的问题,要解决这个问题,首先要了解两者的区别(mercator投影).WGS84投影 如图所示,是一张Mercator投影的地图瓦片,这种投影将地球投影成 W 与 H 相等的图片,是一个正方形(宽度与高度相等) 经纬度方式:-180°,-85°,+180°,

研发三维GIS系统笔记/实现wgs84投影-002

四叉树代码修改完善 原来的代码中,没有使用投影转换,直接使用的是世界坐标(单位是米), CELLQuadTree::CELLQuadTree( CELLTerrainInterface* pInterface ,CELLQuadTree* parent ,const real2 vStart ,co

研发三维GIS系统笔记/实现wgs84投影-001

1. 工作内容,改造引擎,支持wgs84投影 改造原因:目前投影是墨卡托投影(与Google Map一致) 目前的GIS系统是二维的采用这个坐标系是没有问题的 但不支持wgs84瓦片数据以及高程数据,工作中很多数据是wgs84格式的,尤其很多三维GIS都是采用wgs84投影 wgs84 与merca

如何将Tiff文件切成瓦片( GDAL切片) gdal2tile - 基于C++语言开发

准备资料 1. 一张wgs84投影的大tiff文件,建议初学者使用一张全球 2048 * 1024 / 4096 * 2048 的完整数据(有助于观察验证) 2. 准备C++开发环境,配置好gdal (笔者使用的环境是 vs2022 + gdal-2.3.0) c++ 开发环境 3. 建立一个测试工

大语言模型的开发利器langchain

[toc] # 简介 最近随着chatgpt的兴起,人工智能和大语言模型又再次进入了人们的视野,不同的是这一次像是来真的,各大公司都在拼命投入,希望能在未来的AI赛道上占有一席之地。因为AI需要大规模的算力,尤其是对于大语言模型来说。大规模的算力就意味着需要大量金钱的投入。那么对于小公司或者个人来说

股债二八平衡策略

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 雪球蛋卷二八安睡策略 雪球旗下的蛋卷基金,曾经推出过一个名为二八安睡策略的组合基金,绩效极为很稳定,如图: 二八安睡策略的组合基金的投资逻辑 a. 投资者购买“蛋卷安睡二八平衡”视同投资者接受约定交易业务

免费广告效果监测服务,实现全链路营销效果跟踪

广告主们都希望以低预算获得更高的广告投放收益,在投放广告后,想要了解高回报的渠道,往往需要收集并分析繁杂的数据,耗时耗力。通过广告监测,广告主可以准确的追溯用户渠道来源,看到不同流量的用户价值,分析广告投放效果,从而指导广告的出价和投放素材的优化,把预算花在刀刃上。 针对广告主们广告监测的需求,华为