简介

插屏广告是一种在应用开启、暂停或退出时以全屏的形式弹出的广告形式,展示时机巧妙避开用户对应用的正常体验,尺寸大,曝光效果好。
此Codelab将引导您在应用中增加插屏广告的展示。在整个过程中,将介绍如何添加代码的详细过程以正确展示插屏广告。

你将建立什么

您将构建一个展示插屏广告的应用。
您的应用将:

您将会学到什么

硬件要求

软件要求

查看方法:设备上 设置->应用->应用管理 搜索HMS Core

在Android Studio中打开工作项目

  1. 打开Android Studio。
  2. 创建新项目,选择"Empty Activity",命名为InterstitialExample。
  3. 点击完成按钮。

配置HUAWEI Ads SDK仓库及依赖包

在项目级build.gradle文件中配置Maven仓地址,需添加下面内容:
build.gradle

buildscript { repositories { google() jcenter() maven { url 'https://developer.huawei.com/repo/' } } ... } allprojects { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }

在应用级build.gradle文件中配置依赖包,需添加下面内容:

build.gradle

dependencies { ... implementation 'com.huawei.hms:ads-lite:13.4.32.300' ... }

点击"Sync Now"等待同步完成。

配置混淆脚本

开发者编译APK前需要配置不要混淆HUAWEI Ads SDK,避免功能异常。

  1. 打开Android工程的混淆配置文件。
  2. 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(); } };

调用InterstitialAdshow()方法来显示广告,在此之前需要调用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并学到了:

您可以阅读下面链接,了解更多相关的信息。

您可以点击下方按钮下载源码。

源码下载

已复制代码