插頁式廣告

插頁式廣告是覆蓋其主機應用界面的全屏廣告。它們通常顯示在應用程序流程中的自然過渡點,例如活動之間或遊戲關卡之間的暫停期間。當應用程序顯示插頁式廣告時,用戶可以選擇點擊廣告並繼續到其目的地,或者關閉它並返回應用程序。案例研究

本指南介紹瞭如何將插頁式廣告集成到 Android 應用中。

先決條件

  • Google 移動廣告 SDK 19.7.0 或更高版本。
  • 按照入門指南導入 Google 移動廣告 SDK 並更新您的 Android 清單。

始終使用測試廣告進行測試

在構建和測試您的應用程序時,請確保您使用的是測試廣告,而不是實際的生產廣告。否則可能會導致您的帳戶被暫停。

加載測試廣告的最簡單方法是使用我們的 Android 插頁式專用測試廣告單元 ID:

ca-app-pub-3940256099942544/1033173712

它經過特殊配置,可針對每個請求返回測試廣告,您可以在編碼、測試和調試時在自己的應用程序中自由使用它。只需確保在發布應用之前將其替換為您自己的廣告單元 ID。

有關移動廣告 SDK 的測試廣告如何工作的更多信息,請參閱測試廣告

加載廣告

要加載插頁式廣告,請調用InterstitialAd靜態load()方法並傳入InterstitialAdLoadCallback以接收加載的廣告或任何可能的錯誤。請注意,與其他格式加載回調一樣, InterstitialAdLoadCallback利用LoadAdError提供更高保真度的錯誤詳細信息。

爪哇

import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      MobileAds.initialize(this, new OnInitializationCompleteListener() {
        @Override
        public void onInitializationComplete(InitializationStatus initializationStatus) {}
      });
      AdRequest adRequest = new AdRequest.Builder().build();

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
        new InterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
        // The mInterstitialAd reference will be null until
        // an ad is loaded.
        mInterstitialAd = interstitialAd;
        Log.i(TAG, "onAdLoaded");
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Handle the error
        Log.i(TAG, loadAdError.getMessage());
        mInterstitialAd = null;
      }
    });
  }
}

科特林

import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;
class MainActivity : AppCompatActivity() {
  private var mInterstitialAd: InterstitialAd? = null
  private final var TAG = 'MainActivity'
    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      var adRequest = AdRequest.Builder().build()

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest, object : InterstitialAdLoadCallback() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.d(TAG, adError?.message)
          mInterstitialAd = null
        }

        override fun onAdLoaded(interstitialAd: InterstitialAd) {
          Log.d(TAG, 'Ad was loaded.')
          mInterstitialAd = interstitialAd
        }
      })
    }
}

設置 FullScreenContentCallback

FullScreenContentCallback處理與顯示InterstitialAd相關的事件。在顯示InterstitialAd之前,請確保設置回調:

爪哇

mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when fullscreen content is dismissed.
    Log.d("TAG", "The ad was dismissed.");
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when fullscreen content failed to show.
    Log.d("TAG", "The ad failed to show.");
  }

  @Override
  public void onAdShowedFullScreenContent() {
    // Called when fullscreen content is shown.
    // Make sure to set your reference to null so you don't
    // show it a second time.
    mInterstitialAd = null;
    Log.d("TAG", "The ad was shown.");
  }
});

科特林

mInterstitialAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdDismissedFullScreenContent() {
    Log.d(TAG, 'Ad was dismissed.')
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    Log.d(TAG, 'Ad failed to show.')
  }

  override fun onAdShowedFullScreenContent() {
    Log.d(TAG, 'Ad showed fullscreen content.')
    mInterstitialAd = null
  }
}

展示廣告

插頁式廣告應在應用流程的自然暫停期間顯示。一個遊戲的關卡之間就是一個很好的例子,或者在用戶完成一項任務之後。要顯示插頁式廣告,請使用show()方法。

爪哇

if (mInterstitialAd != null) {
  mInterstitialAd.show(MyActivity.this);
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}

科特林

if (mInterstitialAd != null) {
  mInterstitialAd?.show(this)
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.")
}

一些最佳實踐

考慮插頁式廣告是否適合您的應用。
插頁式廣告在具有自然過渡點的應用中效果最佳。在應用程序中完成一項任務,比如分享一張圖片或完成一個遊戲關卡,就會產生這樣一個點。由於用戶希望在操作中休息一下,因此很容易展示插頁式廣告而不會影響他們的體驗。請務必考慮您將在應用工作流程中的哪些點顯示插頁式廣告以及用戶可能會如何響應。
請記住在顯示插頁式廣告時暫停操作。
有許多不同類型的插頁式廣告:文字、圖片、視頻等。請務必確保當您的應用顯示插頁式廣告時,它也會暫停使用某些資源以允許廣告利用它們。例如,當您調用顯示插頁式廣告時,請務必暫停您的應用程序生成的任何音頻輸出。
留出足夠的加載時間。
正如確保在適當的時間展示插頁式廣告很重要一樣,確保用戶不必等待它們加載也很重要。在您打算調用show() load()提前加載廣告可以確保您的應用在顯示時準備好完全加載的插頁式廣告。
不要用廣告淹沒用戶。
雖然增加應用中插頁式廣告的頻率似乎是增加收入的好方法,但它也會降低用戶體驗並降低點擊率。確保用戶不會因為頻繁被打擾而無法再享受使用您的應用程序的樂趣。

源代碼

GitHub 上的示例

成功的故事

下一步