变现利器!一文带你学会应用内添加「贴片广告」

什么是贴片广告

贴片广告是一种在视频播放过程中插入的视频或图片广告。视频广告一般是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();

更多应用内广告形式操作指南:

1、应用内添加Banner广告位

2、应用内添加激励广告

3、应用内添加原生广告

4、应用内添加开屏广告

5、应用内添加插屏广告

6、应用内添加贴片广告

 

>>访问华为广告服务官网,获取华为广告服务开发指导文档

 

>>请戳华为开发者联盟官网开发指导文档,了解更多相关内容

 

>>华为移动服务开源仓库地址:GitHubGitee

 

原文链接:developer.huawei.com/consumer/cn…

原作者:胡椒

posted @ 2021-06-29 14:52  华为开发者论坛  阅读(2454)  评论(0编辑  收藏  举报