插頁式廣告

插頁式廣告會全螢幕顯示,覆蓋整個應用程式的介面。 這類廣告顯示的時間點通常都是在應用程式流程中的自然轉換點, 例如在活動之間或遊戲關卡之間的暫停期間。 當應用程式顯示全螢幕廣告時,使用者可以選擇輕觸廣告前往到達網頁,或是關閉廣告返回應用程式。

本指南說明如何將插頁式廣告整合至 Android 應用程式。

必要條件

  • Google Mobile Ads SDK 19.7.0 以上版本。
  • 完成入門指南

一律使用測試廣告進行測試

建構及測試應用程式時,請務必使用測試廣告,而非 現場及正式環境廣告否則帳戶可能會遭到停權。

如要載入測試廣告,最簡單的方法是使用 Android 插頁式廣告專用的測試廣告單元 ID:

/21775744923/example/interstitial

這項機制經過特別設定,可針對每個請求傳回測試廣告 在您的程式設計、測試和偵錯時,可以免費使用應用程式。只要在發布應用程式前,將其替換為自己的廣告單元 ID 即可。

若要進一步瞭解 Mobile Ads SDK 測試廣告的運作方式,請參閱: 測試廣告

載入廣告

如要載入插頁式廣告,請呼叫 AdManagerInterstitialAd 靜態 load() 方法,並傳入 AdManagerInterstitialAdLoadCallback 以接收已載入的廣告或任何可能的錯誤。請注意,AdManagerInterstitialAdLoadCallback 會像其他格式載入回呼一樣,利用 LoadAdError 提供更精確的錯誤詳細資料。

Java

import com.google.android.gms.ads.admanager.AdManagerInterstitialAd;
import com.google.android.gms.ads.admanager.AdManagerInterstitialAdLoadCallback;

public class MainActivity extends Activity {

  private AdManagerInterstitialAd mAdManagerInterstitialAd;
  private static final String TAG = "MainActivity";

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

    AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();

    AdManagerInterstitialAd.load(this,"/21775744923/example/interstitial", adRequest,
        new AdManagerInterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull AdManagerInterstitialAd interstitialAd) {
        // The mAdManagerInterstitialAd reference will be null until
        // an ad is loaded.
        mAdManagerInterstitialAd = interstitialAd;
        Log.i(TAG, "onAdLoaded");
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Handle the error
        Log.d(TAG, loadAdError.toString());
        mAdManagerInterstitialAd = null;
      }
    });
  }
}

Kotlin

import com.google.android.gms.ads.admanager.AdManagerInterstitialAd;
import com.google.android.gms.ads.admanager.AdManagerInterstitialAdLoadCallback;

class MainActivity : AppCompatActivity() {

  private var mAdManagerInterstitialAd: AdManagerInterstitialAd? = null
  private final val TAG = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      val adRequest = AdManagerAdRequest.Builder().build()

      AdManagerInterstitialAd.load(this,"/21775744923/example/interstitial", adRequest, object : AdManagerInterstitialAdLoadCallback() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.d(TAG, adError?.toString())
          mAdManagerInterstitialAd = null
        }

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

設定 FullScreenContentCallback

FullScreenContentCallback 會處理與顯示 InterstitialAd。顯示InterstitialAd前,請務必設定 回呼:

Java

mAdManagerInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
  @Override
  public void onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.");
  }

  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad dismissed fullscreen content.");
    mAdManagerInterstitialAd = null;
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    mAdManagerInterstitialAd = null;
  }

  @Override
  public void onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.");
  }

  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.");
  }
});

Kotlin

mAdManagerInterstitialAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdClicked() {
    // Called when a click is recorded for an ad.
    Log.d(TAG, "Ad was clicked.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    Log.d(TAG, "Ad dismissed fullscreen content.")
    mAdManagerInterstitialAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    mAdManagerInterstitialAd = null
  }

  override fun onAdImpression() {
    // Called when an impression is recorded for an ad.
    Log.d(TAG, "Ad recorded an impression.")
  }

  override fun onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad showed fullscreen content.")
  }
}

顯示廣告

插頁式廣告應顯示在應用程式流程中的自然暫停期間。 在遊戲關卡之間,或是使用者完成任務後,就是不錯的範例。 如要顯示插頁式廣告,請使用 show() 方法,增加圍繞地圖邊緣的邊框間距。

Java

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

Kotlin

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

一些最佳做法

請考量插頁式廣告是否適合您的應用程式。
插頁式廣告最適合包含自然轉換點的應用程式。 應用程式內的工作結論,例如分享圖片或完成 就是所謂的遊戲層級請務必考量在應用程式工作流程中的哪個時機顯示插頁式廣告,以及使用者可能的回應方式。
提醒您,顯示插頁式廣告時應將動作暫停。
插頁式廣告有許多不同類型,包括文字、圖像、影片等。請務必確認應用程式顯示 也會暫停使用部分資源,以便讓廣告 善加利用這些原則舉例來說,當您呼叫顯示插頁式廣告時,請務必暫停應用程式產生的任何音訊輸出。
提供足夠的載入時間。
同樣重要的是,務必在 並確保使用者不必費心 等待載入完成在呼叫 show() 之前先呼叫 load(),即可預先載入廣告,確保應用程式在顯示插頁式廣告時,已準備好完整載入的廣告。
不要讓應用程式廣告氾濫。
雖然增加應用程式中插頁式廣告的展示頻率似乎是提高收益的好方法,但這麼做也可能會降低使用者體驗,並降低點閱率。請確保使用者不會經常受到干擾,以免無法享受應用程式帶來的樂趣。

GitHub 上的範例

後續步驟