插页式广告

插页式广告属于全屏广告,会覆盖宿主应用的整个界面,通常展示在应用流程的自然过渡点上,例如,活动之间的切换处或游戏关卡之间的暂停时段中。当应用展示插页式广告时,用户可以点按广告前往其目标页面,也可以关闭广告回到应用界面。阅读我们的案例研究

本指南介绍了如何将插页式广告植入到 Android 应用中。

前提条件

  • 通读入门指南
  • 务必用测试广告进行测试

    在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的账号被中止。

    对于 Android 插页式广告,加载测试广告最简便的方法就是使用下面的专用测试广告单元 ID:

    ca-app-pub-3940256099942544/1033173712

    该测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中随意使用该测试广告单元 ID。需要注意的一点是,请务必在发布应用前用您的广告单元 ID 替换该测试广告单元 ID。

    如需详细了解 Google 移动广告 SDK(Beta 版)的测试广告如何运作,请参阅测试广告

    加载广告

    要加载插页式广告,请调用 InterstitialAd 静态 load() 方法并传入 AdLoadCallback<InterstitialAd>,以接收加载的广告或任何可能的错误。

    Kotlin

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
    import com.google.android.libraries.ads.mobile.sdk.MobileAds
    
    class InterstitialActivity : Activity() {
      private var interstitialAd: InterstitialAd? = null
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Load ads after you initialize Google Mobile Ads SDK (beta).
        InterstitialAd.load(
          AdRequest.Builder(AD_UNIT_ID).build(),
          object : AdLoadCallback<InterstitialAd> {
            override fun onAdLoaded(ad: InterstitialAd) {
              // Interstitial ad loaded.
              interstitialAd = ad
            }
    
            override fun onAdFailedToLoad(adError: LoadAdError) {
              // Interstitial ad failed to load.
              interstitialAd = null
            }
          },
        )
      }
    
      companion object {
        // Sample interstitial ad unit ID.
        const val AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712"
      }
    }
    

    Java

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd;
    import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback;
    import com.google.android.libraries.ads.mobile.sdk.MobileAds;
    
    class InterstitialActivity extends Activity {
      // Sample interstitial ad unit ID.
      private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712";
      private InterstitialAd interstitialAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize Google Mobile Ads SDK (beta).
        InterstitialAd.load(
            new AdRequest.Builder(AD_UNIT_ID).build(),
            new AdLoadCallback<InterstitialAd>() {
              @Override
              public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                // Interstitial ad loaded.
                AdLoadCallback.super.onAdLoaded(interstitialAd);
                InterstitialActivity.this.interstitialAd = interstitialAd;
              }
    
              @Override
              public void onAdFailedToLoad(@NonNull LoadAdError adError) {
                // Interstitial ad failed to load.
                AdLoadCallback.super.onAdFailedToLoad(adError);
                interstitialAd = null;
              }
            }
        );
      }
    }
    

    设置 InterstitialAdEventCallback

    InterstitialAdEventCallback 负责处理与展示 InterstitialAd 相关的事件。在展示插页式广告之前,请务必按如下方式设置回调:

    Kotlin

    // Listen for ad events.
    interstitialAd?.adEventCallback =
      object : InterstitialAdEventCallback {
        override fun onAdShowedFullScreenContent() {
          // Interstitial ad did show.
        }
    
        override fun onAdDismissedFullScreenContent() {
          // Interstitial ad did dismiss.
          interstitialAd = null
        }
    
        override fun onAdFailedToShowFullScreenContent(
          fullScreenContentError: FullScreenContentError
        ) {
          // Interstitial ad failed to show.
          interstitialAd = null
        }
    
        override fun onAdImpression() {
          // Interstitial ad did record an impression.
        }
    
        override fun onAdClicked() {
          // Interstitial ad did record a click.
        }
      }
    

    Java

    // Listen for ad events.
    interstitialAd.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Interstitial ad did show.
            InterstitialAdEventCallback.super.onAdShowedFullScreenContent();
          }
    
          @Override
          public void onAdDismissedFullScreenContent() {
            // Interstitial ad did dismiss.
            InterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
            interstitialAd = null;
          }
    
          @Override
          public void onAdFailedToShowFullScreenContent(
              @NonNull FullScreenContentError fullScreenContentError) {
            // Interstitial ad failed to show.
            InterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
                fullScreenContentError);
            initerstitialAd = null;
          }
    
          @Override
          public void onAdImpression() {
            // Interstitial ad did record an impression.
            InterstitialAdEventCallback.super.onAdImpression();
          }
    
          @Override
          public void onAdClicked() {
            // Interstitial ad did record a click.
            InterstitialAdEventCallback.super.onAdClicked();
          }
        }
    );
    

    展示广告

    如需展示插页式广告,请使用 show() 方法。

    Kotlin

    // Show the ad.
    interstitialAd?.show(this@InterstitialActivity)
    

    Java

    // Show the ad.
    interstitialAd.show(InterstitialActivity.this);
    

    一些最佳做法

    考虑插页式广告这种广告类型是否适合您的应用。
    在具有自然过渡点的应用中,插页式广告的效果最好。此类过渡点通常存在于应用内的任务结束时,例如分享完图片或完成一个游戏关卡时。请务必考虑在应用流程的哪些时间点展示插页式广告,以及用户可能会以什么方式响应。
    务必在展示插页式广告时暂停操作。
    插页式广告类型多样,包括文字广告、图片广告和视频广告等。确保应用在展示插页式广告时,也会暂停使用某些资源,以便供广告使用,这一点十分重要。例如,当您发出展示插页式广告的调用后,请务必暂停应用产生的所有音频输出。
    留出充足的加载时间。
    确保在恰当的时间展示插页式广告十分重要,同样,确保用户无需等待广告加载也十分重要。在您打算调用 show() 前,请事先通过调用 load() 加载广告,这可确保应用在广告展示时间到来前完全加载插页式广告。
    不要向用户展示太多广告。
    虽然提高插页式广告在应用中的展示频次似乎是实现增收的好方法,但这么做会影响用户体验,还会降低点击率。应确保用户不会频繁受到广告打扰,使他们可以充分享受到使用应用的乐趣。

    示例

    下载并运行示例应用,该应用演示了如何使用 Google 移动广告 SDK(Beta 版)。