插頁式廣告

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

插頁式廣告是全螢幕廣告,覆蓋其代管應用程式介面。這類廣告通常顯示在應用程式流程中的自然轉換點 (例如操作後的空檔或遊戲關卡之間的暫停時間)。應用程式顯示插頁式廣告時,使用者可以選擇輕觸廣告前往到達網頁,或是關閉廣告返回應用程式。個案研究

本指南說明如何在 Android 應用程式中加入插頁式廣告。

必要條件

  • Google Mobile Ads SDK 19.7.0 或更新版本。
  • 完成入門指南

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

建構及測試應用程式時,請務必使用測試廣告,而非即時正式版的廣告。否則我們可能會將您的帳戶停權。

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

ca-app-pub-3940256099942544/1033173712

它經過特別設定,可以針對每次要求傳回測試廣告,而您可以在編寫、測試和偵錯應用程式時,在自己的應用程式中使用它。發布應用程式前,請務必將其中的 ID 換成自己的廣告單元 ID。

如要進一步瞭解 Mobile Ads SDK 的測試廣告運作方式,請參閱「測試廣告」。

載入廣告

如要載入插頁式廣告,請呼叫 InterstitialAd 靜態 load() 方法,並傳入 InterstitialAdLoadCallback 以接收已載入的廣告或任何可能錯誤。請注意,如同其他格式載入回呼,InterstitialAdLoadCallback 會使用 LoadAdError 提供較高傳真的錯誤詳細資料。

Java

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.d(TAG, loadAdError.toString());
        mInterstitialAd = null;
      }
    });
  }
}

Kotlin

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?.toString())
          mInterstitialAd = null
        }

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

設定 FullScreenContentCallback

FullScreenContentCallback 會處理與顯示 InterstitialAd 相關的事件。顯示 InterstitialAd 之前,請務必設定回呼:

Java

mInterstitialAd.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.");
    mInterstitialAd = null;
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.");
    mInterstitialAd = 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

mInterstitialAd?.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.")
    mInterstitialAd = null
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.e(TAG, "Ad failed to show fullscreen content.")
    mInterstitialAd = 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 (mInterstitialAd != null) {
  mInterstitialAd.show(MyActivity.this);
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}

Kotlin

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

最佳做法

請考慮插頁式廣告是最適合您應用程式的廣告類型。
插頁式廣告在包含自然轉換點的應用程式中效果最佳。 使用者在應用程式中完成工作 (例如分享圖片或完成遊戲關卡) 時,系統會建立這類點。由於使用者預期動作會中斷,因此很容易顯示插頁式廣告,而不會幹擾使用者體驗。請務必考量應用程式工作流程中的哪些時間點會放送插頁式廣告,以及使用者可能會如何回應。
顯示插頁式廣告時,別忘了暫停動作。
插頁式廣告有許多類型:文字、圖像、影片等。請務必確保應用程式顯示插頁式廣告時,也會暫停使用某些資源,讓廣告能受益。舉例來說,當您呼叫顯示插頁式廣告時,請務必暫停應用程式產生的任何音訊輸出。
提供適當的載入時間。
確保在適當的時機顯示插頁式廣告也同樣重要,因此請務必確保使用者不必等待廣告載入。在想要呼叫 show() 之前呼叫 load() 預先載入廣告,可確保在應用程式顯示顯示時,已備妥應用程式已載入完畢的插頁式廣告。
不要讓應用程式廣告氾濫。
雖然提高應用程式內插頁式廣告的頻率似乎是提高收益的好方法,但也可能降低使用者體驗及降低點閱率。請確認使用者不會經常受到干擾,以免他們不再使用您的應用程式。

原始碼

GitHub 範例

成功案例

後續步驟