乐趣区

关于android:投放视频广告时如何快速与第三方播放器兼容

新媒体时代,广告款式越来越丰盛。相较于传统的图文信息,视频类广告更具备直观性,可能让消费者在理解产品常识和性能的同时加深对产品的印象。

因而在各类网站或 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" />
  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);
    }
});

应用自定义播放器播放线性广告

  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" />
  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 广告的示例代码并运行,能够看到如下效果图:

理解更多详情 >>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~

退出移动版