激励视频广告是全屏视频广告,用户可以选择观看,以换取应用内奖励。
此Codelab将引导您在应用中增加激励广告的展示。在整个过程中,将介绍如何添加代码的详细过程以正确展示激励广告。
您将构建一个展示激励广告的应用。
您的应用将:
在项目级build.gradle
文件中配置Maven仓库路径,需添加下面内容:
buildscript {
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
...
}
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
在应用级build.gradle
文件中配置依赖包,需添加下面内容,并将{version}
替换为最新HUAWEI Ads SDK版本号,参见版本更新说明。
dependencies {
...
implementation 'com.huawei.hms:ads-lite:{version}'
...
}
点击"Sync Now"等待同步完成。
开发者编译APK前需要配置不要混淆HUAWEI Ads SDK,避免功能异常。
Android
工程的混淆配置文件。app/proguard-rules.pro
文件中添加如下两行代码,配置排除HUAWEI Ads SDK的混淆。-keep class com.huawei.openalliance.ad.** { *; }
-keep class com.huawei.hms.ads.** { *; }
要借助于HUAWEI Ads SDK获取广告,必须先在您的应用中调用HwAds.init()
方法初始化SDK ,此过程需要在应用程序启动时完成,在应用后续运行过程中无需重复执行此过程。
在MainActivity
类的onCreate()
方法中调用HwAds.init()
以执行HUAWEI Ads SDK初始化。MainActivity.java
import com.huawei.hms.ads.HwAds;
...
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化HUAWEI Ads SDK
HwAds.init(this);
...
}
...
}
加载激励广告要创建一个RewardAd
对象。MainActivity.java
private void createRewardAd() {
// testx9dtjwj8hp为激励视频广告测试广告位ID
rewardAd = new RewardAd(MainActivity.this, "testx9dtjwj8hp");
}
创建一个按钮,用来观看视频
activity_main.xml
<Button
android:id="@+id/show_video_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="104dp"
android:layout_centerHorizontal="true"
android:text="@string/watch_video_button_text" />
strings.xml
<resources>
...
<string name="watch_video_button_text">watchVideo</string>
...
</resources>
MainActiviry.java
private void loadWatchVideoButton(){
watchAdButton = findViewById(R.id.show_video_button);
watchAdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rewardAdShow();
}
});
}
创建用来展示分数的视图
activity_main.xml
<TextView
android:id="@+id/coin_count_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="200dp"
android:layout_centerHorizontal="true"
android:textAppearance="?android:attr/textAppearanceLarge" />
MainActivity.java
private void loadScoreView() {
scoreView = findViewById(R.id.coin_count_text);
scoreView.setText("Score:" + score);
}
调用loadAd()
方法来获取广告。
可以创建RewardAdLoadListener
,来监听广告的加载状态。
MainActivity.java
private void loadRewardAd() {
if (rewardAd == null) {
createRewardAd();
}
RewardAdLoadListener rewardAdLoadListener = new RewardAdLoadListener() {
@Override
public void onRewardAdFailedToLoad(int errorCode) {
Toast.makeText(MainActivity.this, "onRewardAdFailedToLoad errorCode is :" + errorCode, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onRewardedLoaded() {
Toast.makeText(MainActivity.this, "onRewardedLoaded", Toast.LENGTH_SHORT).show();
}
};
rewardAd.loadAd(new AdParam.Builder().build(), rewardAdLoadListener);
}
调用RewardAd
的show()
方法来显示广告,在此之前需要调用isLoaded()
方法来确认广告已经加载完成。
MainActivity.java
private void rewardAdShow() {
if (rewardAd.isLoaded()) {
rewardAd.show(MainActivity.this, new RewardAdStatusListener() {
@Override
public void onRewardAdClosed() {
loadRewardAd();
}
@Override
public void onRewardAdFailedToShow(int errorCode) {
Toast
.makeText(MainActivity.this, "onRewardAdFailedToShow errorCode is :" + errorCode,
Toast.LENGTH_SHORT)
.show();
}
@Override
public void onRewardAdOpened() {
Toast.makeText(MainActivity.this, "onRewardAdOpened", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewarded(Reward reward) {
Toast
.makeText(MainActivity.this, "Watch video show finished, add " + reward.getAmount() + " scores",
Toast.LENGTH_SHORT)
.show();
// 推荐立即发放奖励,同时在服务端做校验,奖励是否生效;如果未配置奖励物品信息,则根据实际场景发放奖励。
addScore(reward.getAmount());
loadRewardAd();
}
});
}
}
示例代码如下:
private void addScore(int amount) {
score += amount;
scoreView.setText("Score:" + score);
}
RewardAdStatusListener的详细方法说明请参考API文档。
运行项目后,您将会在应用中看到激励广告。
祝贺你,你已经成功完成了Codelab并学到了:
您可以阅读下面链接,了解更多相关的信息。
您可以点击下方按钮下载源码。