简介

插屏广告是一种在应用开启、暂停或退出时以全屏的形式弹出的广告形式,展示时机巧妙避开用户对应用的正常体验,尺寸大,曝光效果好。

此codelab将引导您在应用中增加插屏广告的展示。在整个过程中,将介绍如何添加代码的详细过程以正确展示插屏广告。

您将建立什么

您将在您的应用中通过HUAWEI Ads SDK获取插屏广告和展示插屏广告。

您将会学到什么

硬件要求

支持EMUI 3.0及以上的华为手机、华为平板。

软件要求

需要的知识点

Android基础开发能力。

在Android Studio中创建项目

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

配置HUAWEI Ads SDK仓库及依赖包

  1. 在项目级"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/'} } }
    Gradle 7.0版本后,“allprojects > repositories”配置已迁移到项目级“settings.gradle”文件中。 “settings.gradle”文件配置示例如下:
    dependencyResolutionManagement { ... repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }
  2. 在应用级"build.gradle"文件中配置依赖包,需添加下面内容,并将{version}替换为实际的HUAWEI Ads SDK版本号,请参见版本更新说明
    dependencies { ... implementation 'com.huawei.hms:ads-lite:{version}' ... }
  3. 点击"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初始化。

... 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。
示例代码如下:

private void loadInterstitialAd() { interstitialAd = new InterstitialAd(this); // 设置广告位ID interstitialAd.setAdId(getAdId()); ... } private String getAdId() { if (displayRadioGroup.getCheckedRadioButtonId() == R.id.display_image) { // image_ad_id为teste9ih9j0rc3 return getString(R.string.image_ad_id); } else { // video_ad_id为testb4znbuh3n2 return getString(R.string.video_ad_id); } }

调用InterstitialAd类的loadAd()方法来获取广告。
示例代码如下:

private void loadInterstitialAd() { interstitialAd = new InterstitialAd(this); // 设置广告位ID interstitialAd.setAdId(getAdId()); interstitialAd.setAdListener(adListener); // 获取插屏广告 AdParam adParam = new AdParam.Builder().build(); interstitialAd.loadAd(adParam); ... }

调用InterstitialAd类的setAdListener方法可以为InterstitialAd对象添加广告事件监听器AdListener。
示例代码如下:

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(Activity activity)方法来显示广告,在此之前需要调用isLoaded()方法来确认广告已经加载完成。
示例代码如下:

private void showInterstitial() { // 展示插屏广告 if (interstitialAd != null && interstitialAd.isLoaded()) { interstitialAd.show(this); } else { Toast.makeText(this, "Ad did not load", Toast.LENGTH_SHORT).show(); } }

运行项目后,您将会在应用中看到插屏广告:

祝贺您,您已经成功完成了codelab并学到了:

您可以阅读相关链接,了解更多的信息:开发指南API文档FAQ
您还可以点击源码下载

Code copied