Android でインタースティシャルを表示する

このページには、Android でインタースティシャル広告を表示するための手順とコード サンプルが記載されています。

概要

インタースティシャル広告の表示には、バナーよりも少し手間がかかります。 プレースメント ID を使用して InterstitialAdView を設定するだけでなく、インタースティシャル広告の読み込みが正常に終了したとき、または要求が失敗したときに通知するメソッドを含む AdListener インターフェイスを実装する必要があります。

ユーザーにインタースティシャル広告を表示する準備ができたら、 show() を呼び出します。 これは、インプレッションをカウントするために、 loadAd() への呼び出しから約 4 分以内に行われる必要があります。

詳細については、以下のコード サンプルを参照してください。

Interstitial 広告ユニットでサポートされるクリエイティブ メディア タイプ

この InterstitialAdView では、次のメディアタイプのクリエイティブをレンダリングできます。これらのメディアは、Monetize によってクリエイティブを分類するメディアタイプにマッピングされます ( 「プレースメントの作成 — メディアタイプとサブタイプ」を参照)。

Media Type 説明
バナー (1) 静的またはアニメーションの表示バナー クリエイティブ。
インタースティシャル (3) MRAID、静的画像、HTML レスポンシブ形式を含む全画面クリエイティブ。 クリエイティブの設定については、以下を参照してください。
ビデオ (4) VAST ビデオ クリエイティブ。 ビデオ プレーヤー UI をカスタマイズするには 、「Android のビデオ プレーヤー オプションのカスタマイズ」 を参照してください。

重要

各メディア タイプは、配信の資格を得るためには、Monetize のプレースメントの [許可されたメディア] 構成で明示的に有効にする必要があります。 Monetize UI または API で 、許可されるメディアを 構成して、インタースティシャルで受信するすべてのメディア タイプを含めます。互換性のあるメディア タイプがプレースメントで許可されていない場合、広告は配信されません。 詳細については、「 プレースメントの作成 — 配信できるクリエイティブのタイプとサイズを制限する」を参照してください。

基本的な統合

注:

ベスト プラクティスとして:

  • すべての SDK メソッドをメイン スレッドで呼び出す必要があります。
  • activityOnDestroy() 破棄が予想されるインタースティシャルに対して呼び出す必要があります。
// Android: Kotlin code to show an interstitial ad
package com.example.simpleinterstitial

import android.app.Activity
import android.os.Bundle
import android.util.Log
import com.appnexus.opensdk.*

class MainActivity : Activity(), AdListener {

    private var interstitial: InterstitialAdView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // Set up an ad view with our placement ID.
        interstitial = InterstitialAdView(this).apply {
            placementID = "1326299"
            setAdListener(this@MainActivity)
        }
        // Fetch an ad from the server. If this works, `onAdLoaded` will
        // be called, and we can show the ad.
        interstitial?.loadAd()
    }

    override fun onDestroy() {
        interstitial?.activityOnDestroy()
        super.onDestroy()
    }

    override fun onAdLoaded(av: AdView) {
        Log.d("onAdLoaded", "The ad has loaded, now we can show it...")
        (av as? InterstitialAdView)?.show()
    }

    override fun onAdLoaded(nativeAdResponse: NativeAdResponse) {
        // Ignore. This callback is for Native in Banner.
    }

    override fun onAdRequestFailed(av: AdView, rc: ResultCode) {
        Log.d("onAdRequestFailed", "The ad request failed: $rc")
    }

    override fun onAdClicked(av: AdView) {
        Log.d("onAdClicked", "The user clicked your ad.")
    }

    override fun onAdClicked(adView: AdView, clickUrl: String) {
        // Called only if setClickThroughAction(ANClickThroughAction.RETURN_URL) is set.
        // Handle the URL appropriately.
    }

    override fun onAdCollapsed(av: AdView) {
        // Do something here.
    }

    override fun onAdExpanded(av: AdView) {
        // Do something here as well.
    }

    override fun onAdImpression(av: AdView) {
        // Do something here as well.
    }
}

詳細設定

以下のセクションでは、インタースティシャル広告でのクリエイティブのリクエストと表示の方法をカスタマイズするためのオプションの構成とコールバックについて説明します。

メンバー ID とインベントリ コードを使用して初期化する

プレースメント ID の代わりに、メンバー ID とインベントリ コードを使用して、InterstitialAdViewsetInventoryCodeAndMemberID(int memberID, String inventoryCode) を呼び出すことによって、インタースティシャル広告を要求できます。 在庫コードとプレースメント ID の両方が設定されている場合、インベントリ コードが優先されます。

// Android: Kotlin code to request an interstitial using member ID and inventory code
val interstitial = InterstitialAdView(this)
interstitial.setInventoryCodeAndMemberID(123, "your-inventory-code")
interstitial.setAdListener(this)
interstitial.loadAd()

カスタムのインタースティシャル サイズを使用する

既定では、広告サイズを指定していない場合、SDK はデバイスの画面サイズ以下のサイズの広告を取得します。

  • 1x1 (常に送信)
  • 検出された画面サイズ (常に送信されます)
  • 300x250
  • 320x480
  • 900x500
  • 1024x1024

既定以外のサイズでインタースティシャル広告を表示する場合は、インタースティシャル広告ビューで以下のような setAllowedSizes 方法を使用します。 検出された画面サイズは、引き続きプライマリ サイズとして渡されることに注意してください。 setAllowedSizesを使用して設定されたサイズは、Interstitial Ad View で追加サイズとして渡され、300x250、320x480、900x500、1024x1024 の既定値に置き換わります。

// Android: Kotlin code to show interstitial ads in sizes other than the defaults
val interstitial = InterstitialAdView(this)
interstitial.placementID = "1326299"
interstitial.setAllowedSizes(arrayListOf(AdSize(320, 480), AdSize(768, 1024)))

[閉じる] ボタンの遅延を設定する

バナー クリエイティブとインタースティシャル クリエイティブの場合、デフォルトでは、消すボタンは表示されてから 10 秒後にインタースティシャル広告に表示されます。 遅延を変更するには、InterstitialAdViewsetCloseButtonDelay(int closeButtonDelay) を呼び出し、遅延をミリ秒単位で渡します。 最大値は 10000 ms (10 秒) です。それを超える値は 10 秒にクランプされます。 0を渡すと、閉じるボタンがすぐに表示されます。 この設定は ビデオ クリエイティブには 影響せず、ビデオ独自のスキップ/閉じるコントロールが使用されます。

// Show the close button after 5 seconds instead of the default 10.
interstitial.setCloseButtonDelay(5000)

インタースティシャルを自動閉じる

特定のタイムアウト後に バナー クリエイティブまたは インタースティシャル クリエイティブを自動的に閉じるには、 show() を呼び出さないでください。 代わりに、 showWithAutoDismissDelay(delayinseconds) を呼び出します。 delayinseconds は広告が閉じるまでの秒数です。 この設定はビデオ クリエイティブには影響せず、 ビデオ クリエイティブは完了するかスキップされるまで実行されます。

// Show an interstitial ad, wait for 10 seconds, then auto-close it.
interstitial.showWithAutoDismissDelay(10)

動画プレーヤー オプションをカスタマイズする

スキップ コントロール、ミュート、クリックスルー テキスト、その他の再生コントロールなど、ビデオ プレーヤー UI をカスタマイズするには、「 Android でビデオ プレーヤー オプションをカスタマイズする」を参照してください。


ビデオ完了コールバックを受信する

setVideoEventListener(...) 経由でInterstitialAdViewVideoEventListenerを登録すると、動画インタースティシャル広告の終了方法 (VideoCompletionState.COMPLETEDSKIPPEDERROR) を通知を受け取ることができます。 コールバックは RTB インタースティシャル動画広告 (メディエーションまたは CSR ではありません) に対してのみ発生し、既存のクローズ コールバックと並行して実行されます。

// Android: Kotlin code to receive interstitial video completion callbacks
val interstitial = InterstitialAdView(this) // Create the interstitial ad view
interstitial.placementID = "1326299" // Set placement ID

interstitial.setVideoEventListener { adView, state -> // Register the video completion listener
    when (state) {
        VideoCompletionState.COMPLETED -> {
            // The video played to its natural end
        }
        VideoCompletionState.SKIPPED -> {
            // The user skipped the video before it ended
        }
        VideoCompletionState.ERROR -> {
            // Playback ended because of an error or timeout
        }
    }
}

interstitial.loadAd() // Load the ad