什么是贴片广告
贴片广告是一种在视频播放过程中插入的视频或图片广告。视频广告一般是15s, 可以点跳过按钮直接进入视频播放界面,也可以等广告展示结束自动进入视频播放界面。
贴片广告的优势
相较于其他形式的广告位,贴片广告历史深远,是目前较为普遍的网络视频广告形式。只要用户观看视频,贴片广告就会出现,所以贴片广告的播放量较大,触达率较高。
华为广告服务能够帮助开发者接入包括贴片广告在内的6种广告位。接下来的文章会详细讲解开屏广告的开发步骤。示例代码已在相关社区进行开源,欢迎开发者关注、下载并提供宝贵意见:
Github官方地址:https://github.com/hms-core/hms-ads-demo-java
Gitee官方地址:https://gitee.com/hms-core/hms-ads-demo-java
前提条件
HUAWEI Ads SDK依赖HMS Core(APK)4.0.0.300及以上版本。如果设备上未安装HMS Core(APK)4.0.0.300及以上版本,则无法使用HUAWEI Ads SDK的相关接口。
在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法可参见帐号注册认证。
参见创建项目和在项目中添加应用完成应用的创建。
开发前准备
广告服务的集成需如下4个关键步骤,可以参考华为开发者联盟文档
1. 导入HUAWEI Ads SDK
2. 配置网络权限
3. 配置混淆脚本
4. 初始化SDK
开发关键步骤
1.1 创建InstreamAdLoader。
InstreamAdLoader类提供了InstreamAdLoader.Builder类,可用于设置广告位ID、设置自定义选项和创建InstreamAdLoader对象。
“Java” // "testy3cglm3pj0"为测试专用的广告位ID,App正式发布时需要改为正式的广告位ID InstreamAdLoader.Builder builder = new InstreamAdLoader.Builder(context, "testy3cglm3pj0"); // 设置贴片最大时长 InstreamAdLoader adLoader = builder.setTotalDuration(totalDuration) // 设置贴片返回的最大数量 .setMaxCount(maxCount) .setInstreamAdLoadListener(new InstreamAdLoadListener() { @Override public void onAdLoaded(List<InstreamAd> ads) { // 广告获取成功后调用 ... } @Override public void onAdFailed(int errorCode) { // 广告获取失败后调用 ... } }).build();
当获取广告成功后,SDK会调用InstreamAdLoadListener监听器的onAdLoaded()方法返回的InstreamAd对象列表。
当获取广告失败后,SDK会调用InstreamAdLoadListener监听器的onAdFailed()方法。
1.2 获取广告。
InstreamAdLoader提供loadAd()方法获取广告。
InstreamAdLoader.loadAd(new AdParam.Builder().build());
调用loadAd()后,SDK将对添加的监听器方法进行一次成功或失败的回调。
1.3 展示贴片广告。
获取到广告后在监听器的回调方法中展示贴片广告,需要在每个广告视图的一角展示“为什么看到此广告”的图标“i”或者“不再显示该广告”的图标“x”,并且必须展示广告标识。
以下是展示贴片广告的步骤:
定义贴片广告布局。
需要定义一个布局用于展示InstreamAd列表中的广告素材。
<RelativeLayout android:id="@+id/instream_ad_container" android:layout_width="match_parent" android:layout_height="200dp" android:visibility="gone"> <!-- 贴片广告视图 --> <com.huawei.hms.ads.instreamad.InstreamView android:id="@+id/instream_view" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- 跳过按钮视图 --> <TextView android:id="@+id/instream_skip" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> <!-- 倒计时视图 --> <TextView android:id="@+id/instream_count_down" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> <!-- 广告标识视图 --> <TextView android:id="@+id/instream_ad_flag" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> <!-- 为什么展示此广告视图 --> <ImageView android:id="@+id/instream_why_this_ad" android:layout_width="14dp" android:layout_height="14dp" ... /> <!-- 点击广告跳转按钮 --> <TextView android:id="@+id/instream_call_to_action" android:layout_width="wrap_content" android:layout_height="wrap_content" ... /> </RelativeLayout>
-
注册广告到广告视图。
获取到InstreamAd对象列表后,需要将广告注册到广告视图。
instreamView.setInstreamAds(ads);
-
监听广告状态。
贴片广告提供了InstreamMediaStateListener、InstreamMediaChangeListener和MediaMuteListener来监听贴片广告状态。
instreamView.setInstreamMediaChangeListener(new InstreamMediaChangeListener(){ @Override public void onSegmentMediaChange(InstreamAd ad) { // 广告媒体切换 ... } }); instreamView.setInstreamMediaStateListener(new InstreamMediaStateListener() { @Override public void onMediaProgress(int percent, int playTime) { // 播放过程 ... } @Override public void onMediaStart(int playTime) { // 播放开始 ... } @Override public void onMediaPause(int playTime) { // 播放暂停 ... } @Override public void onMediaStop(int playTime) { // 播放停止 ... } @Override public void onMediaCompletion(int playTime) { // 播放完成 ... } @Override public void onMediaError(int playTime, int errorCode, int extra) { // 播放错误 ... } }); instreamView.setMediaMuteListener(new MediaMuteListener() { @Override public void onMute() { // 贴片广告静音 ... } @Override public void onUnmute() { // 贴片广告取消静音 ... } });
销毁广告。
当贴片广告展示结束时,应将贴片广告视图销毁。
instreamView.destroy();
更多应用内广告形式操作指南:
6、应用内添加贴片广告
>>访问华为广告服务官网,获取华为广告服务开发指导文档
原文链接:developer.huawei.com/consumer/cn…
原作者:胡椒