插屏广告是一种在应用开启、暂停或退出时以全屏的形式弹出的广告形式,展示时机巧妙避开用户对应用的正常体验,尺寸大,曝光效果好。
此Codelab将引导您在应用中增加插屏广告的展示。在整个过程中,将介绍如何添加代码的详细过程以正确展示插屏广告。
您将构建一个展示插屏广告的应用。
您的应用将:
查看方法:设备上 设置->应用->应用管理 搜索HMS Core
在项目级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 AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化HUAWEI Ads SDK.
HwAds.init(this);
...
}
...
}
对于插屏广告HUAWEI Ads SDK 提供了 InterstitialAd
类,用于创建插屏广告对象,并通过InterstitialAd
类的setAdId()方法设置测试广告位ID
。
示例代码如下:MainActivity.java
private void loadInterstitialAd() {
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdId(getAdId()); // 设置广告位ID.
...
}
private String getAdId() {
if (displayRadioGroup.getCheckedRadioButtonId() == R.id.display_image) {
return getString(R.string.image_ad_id); // image_ad_id为teste9ih9j0rc3
} else {
return getString(R.string.video_ad_id); // video_ad_id为testb4znbuh3n2
}
}
调用InterstitialAd
类的loadAd()
方法来获取广告。
示例代码如下:MainActivity.java
private void loadInterstitialAd() {
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdId(getAdId()); // 设置广告位ID.
interstitialAd.setAdListener(adListener);
// 获取插屏广告。
AdParam adParam = new AdParam.Builder().build();
interstitialAd.loadAd(adParam);
...
}
调用InterstitialAd
类的setAdListener
方法可以为InterstitialAd
对象添加广告事件监听器AdListener
。
示例代码如下:MainActivity.java
private AdListener adListener = new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
Toast.makeText(MainActivity.this, "Ad loaded", Toast.LENGTH_SHORT).show();
// 展示插屏广告.
showInterstitial();
}
@Override
public void onAdFailed(int errorCode) {
Toast.makeText(MainActivity.this, "Ad load failed with error code: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.d(TAG, "Ad load failed with error code: " + errorCode);
}
@Override
public void onAdClosed() {
super.onAdClosed();
Log.d(TAG, "onAdClosed");
}
@Override
public void onAdClicked() {
Log.d(TAG, "onAdClicked");
super.onAdClicked();
}
@Override
public void onAdOpened() {
Log.d(TAG, "onAdOpened");
super.onAdOpened();
}
};
调用InterstitialAd
的show()
方法来显示广告,在此之前需要调用isLoaded()
方法来确认广告已经加载完成。
示例代码如下:MainActivity.java
private void showInterstitial() {
// 展示插屏广告
if (interstitialAd != null && interstitialAd.isLoaded()) {
interstitialAd.show();
} else {
Toast.makeText(this, "Ad did not load", Toast.LENGTH_SHORT).show();
}
}
运行项目后,您将会在应用中看到插屏广告:
祝贺您,您已经成功完成了Codelab并学到了:
您可以阅读下面链接,了解更多相关的信息。
您可以点击下方按钮下载源码。