ネイティブ アドバンス広告

ネイティブ アドバンス広告とは、プラットフォームに備わっている UI コンポーネントを通じてユーザーに広告アセットが表示されるフォーマットです。ネイティブ広告は、プラットフォームに備わっている UI コンポーネンを通じてユーザーに表示される広告です。作成済みのレイアウトに溶け込むように表示され、ユーザー エクスペリエンスの視覚デザインに合わせてフォーマットすることができます。コーディングの観点では、ネイティブ広告を読み込むときに広告のアセットを含む NativeAd オブジェクトをアプリで受け取り、(SDK ではなく)アプリ自身で広告アセットの表示を行うことになります。

システム定義のネイティブ広告フォーマットには、「アプリ インストール」と「コンテンツ」の 2 種類があります。 アプリ インストール広告は NativeAppInstallAd で表され、コンテンツ広告は NativeContentAd で表されます。これらのオブジェクトには、ネイティブ広告のアセットが含まれます。 このガイドでは、ネイティブ アドバンス広告を Android アプリに組み込む方法を説明します。

前提条件

  • Google Mobile Ads SDK を単独でインポートしているか、Firebase の一部としてインポートしている必要があります。

広告の読み込み

ネイティブ広告の読み込みには AdLoader クラスを使用します。このクラスには、作成時にカスタマイズできる独自の Builder クラスがあります。AdLoader の作成時にリスナーを追加すると、アプリで受け取り可能なネイティブ広告の種類を指定できます。すると、AdLoader はその種類の広告だけをリクエストするようになります。

AdLoader の作成

次のコードは、1 回のリクエストでアプリ インストール広告かコンテンツ広告のいずれかの読み込みが可能な AdLoader の作成方法を示しています。

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forAppInstallAd(new OnAppInstallAdLoadedListener() {
        @Override
        public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
            // Show the app install ad.
        }
    })
    .forContentAd(new OnContentAdLoadedListener() {
        @Override
        public void onContentAdLoaded(NativeContentAd contentAd) {
            // Show the content ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forAppInstallAd { ad : NativeAppInstallAd ->
            // Show the app install ad.
        }
        .forContentAd { ad : NativeContentAd ->
            // Show the content ad.
        }
        .withAdListener(object : AdListener() {
            override fun onAdFailedToLoad(errorCode: Int) {
                // Handle the failure by logging, altering the UI, and so on.
            }
        })
        .withNativeAdOptions(NativeAdOptions.Builder()
                // Methods in the NativeAdOptions.Builder class can be
                // used here to specify individual options settings.
                .build())
        .build()

個別フォーマットの準備

上記の最初の 2 つのメソッドは、ネイティブ広告の個別フォーマット用に AdLoader を準備するためのものです。次の説明をご覧ください。

forAppInstallAd()
このメソッドを呼び出すと、アプリ インストール広告をリクエストするように AdLoader が設定されます。広告が正常に読み込まれると、リスナー オブジェクトの onAppInstallAdLoaded() メソッドが呼び出されます。
forContentAd()
このメソッドは forAppInstallAd() と同じように機能しますが、対象はコンテンツ広告です。広告が正常に読み込まれると、リスナー オブジェクトの onContentAdLoaded() メソッドが呼び出されます。

AdLoader に複数のネイティブ広告フォーマット用のハンドラがあっても、SDK では広告リクエストを 1 回のみ行います。すると、パブリッシャー様の収益を最大化する広告が Google によって選ばれて返されます。

AdLoader での AdListener の使用

上記の AdLoader の作成時には、withAdListener 関数が AdListener を設定しています。

この手順は省略可能です。このメソッドは唯一のパラメータとして AdListener を受け取ります。これは、広告ライフサイクル イベントの発生時に AdLoader からコールバックを受け取るパラメータです。

Java

.withAdListener(new AdListener() {
    // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
    // so on, can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
    // so on, can be overridden here.
})

ネイティブ広告を扱う場合とバナーやインタースティシャルを扱う場合で、AdListeners の動作には大きな違いが 1 つあります。AdLoader には、ネイティブ広告が読み込まれたときに使うリスナーとして、フォーマットごとに独自のリスナー(NativeAppInstallAd.OnAppInstallAdLoadedListener など)があるため、ネイティブ広告が正常に読み込まれたときに AdListener から onAdLoaded() メソッドが呼び出されません

設定オプション

withNativeAdOptions()

上記の AdLoader の作成時に含まれている最後の関数 withNativeAdOptions() も、省略可能なメソッドです。

Java

.withNativeAdOptions(new NativeAdOptions.Builder()
    // Methods in the NativeAdOptions.Builder class can be
    // used here to specify individual options settings.
    .build()
)

Kotlin

.withNativeAdOptions(NativeAdOptions.Builder()
    // Methods in the NativeAdOptions.Builder class can be
    // used here to specify individual options settings.
    .build()
)

NativeAdOptions オブジェクトを使うと、リクエストを行う際に使うオプションをアプリで設定できます。その Builder クラスには、インスタンスの作成時に使う次のメソッドがあります。

setReturnUrlsForImageAssets()

DrawableUri を保持している NativeAd.Image のインスタンスを介して、ネイティブ広告の画像アセットが返されます。このオプションが false(デフォルト設定)の場合は、SDK が画像アセットを自動的に取得して、DrawableUri の両方に値が入力されます。しかし、このオプションが true の場合は、SDK が Uri だけに値を入力するため、実際にダウンロードする画像はご自身の判断で決定できます。

setImageOrientation()

クリエイティブによっては、端末の向きに合わせて選べるように複数の画像が用意されている場合もあります。このメソッドを呼び出す際に画面の向きを示す定数 NativeAdOptions のいずれか(ORIENTATION_PORTRAITORIENTATION_LANDSCAPEORIENTATION_ANY)を指定すると、その向きの画像がリクエストされます。このメソッドを呼び出さなければ、デフォルト値 ORIENTATION_LANDSCAPE が使われます。

setRequestMultipleImages()

画像アセットには、画像が 1 つだけでなく複数含まれている場合もあります。この値を true に設定すると、複数の画像を含むアセットの場合でもアプリにすべての画像を表示できると示すことになります。この値をデフォルトの false に設定すると、複数の画像を含むアセットの場合は最初の画像だけを返すようにアプリから SDK に指示することになります。

AdLoader の作成時に withNativeAdOptions を呼び出さなければ、各オプションでデフォルト値が使われます。

setAdChoicesPlacement()

AdChoices オーバーレイは、デフォルトでは右上隅に配置されます。オーバーレイのレンダリング位置をアプリで変更するには、プロパティを次のいずれかに設定します。

  • ADCHOICES_TOP_LEFT
  • ADCHOICES_TOP_RIGHT
  • ADCHOICES_BOTTOM_RIGHT
  • ADCHOICES_BOTTOM_LEFT
setVideoOptions()

アプリでこのメソッドを使うと、ネイティブ広告の一部として動画アセットを返すように指定できます。詳しくは、このガイドの後に出てくるネイティブ動画の説明をご覧ください。

広告の読み込み

AdLoader の作成が完了したら、それを使って広告を読み込みます。広告の読み込みに利用できるメソッドには、loadAd()loadAds() の 2 つがあります。

注: 現在 loadAds() メソッドは AdMob 広告にしか使えません。メディエーション対象の広告については、loadAd() をご利用ください。

loadAd() メソッドは、次のように 1 つの広告に対してリクエストを送ります。

loadAd()
このメソッドは、1 つの広告に対してリクエストを送ります。

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())
loadAds()
このメソッドは、次のように複数の広告(最大 5 個)に対してリクエストを送ります。

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

これらのメソッドは両方とも、最初のパラメータとしてAdRequestオブジェクトを受け取ります。これは、バナーやインタースティシャルで使われるのと同じAdRequestクラスです。また、他の広告フォーマットの場合と同様に、AdRequestクラスのメソッドを使ってターゲット設定の情報を追加することもできます。

loadAds() の追加パラメータとして、そのリクエストで SDK が読み込みを試行すべき広告の数を指定できます。指定できる広告数は最大 5 個で、リクエストした広告数を SDK が返す保証はありません。loadAds() の呼び出しによって複数の広告が返された場合、それぞれの広告はすべて異なります。

loadAd() を呼び出すと、その後にネイティブ広告オブジェクトを配信するかエラーを報告するために、上で定義したリスナー メソッドに単一のコールバックが行われます。

loadAds() を呼び出すと、そうしたコールバックが少なくとも 1 回、最大でリクエストした広告の数だけ行われます。アプリで複数の広告をリクエストする場合は、読み込みプロセスが完了したかどうかを判断するため、コールバックの実装で必ず AdLoader.isLoading() を呼び出してください。

次のサンプルでは、onAppInstallAdLoaded() コールバックで isLoading() をチェックする方法を示します。

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
    @Override
    public void onAppInstallAdLoaded(NativeAppInstallAd ad) {
        ...
        // some code that displays the app install ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forAppInstallAd {
        ...
        // some code that displays the app install ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()

adLoader.loadAds(AdRequest.Builder().build(), 3)

テストには必ずテスト広告を使用

アプリの開発中やテストの際は必ずテスト広告を使用し、実際の広告は使用しないでください。実際の広告を使用すると、アカウントの停止につながる可能性があります。

テスト広告を読み込むには、次に示す Android ネイティブ アドバンス向けのテスト専用広告ユニット ID を使う方法が便利です。

ca-app-pub-3940256099942544/2247696110

この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、このテスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。

Mobile Ads SDK のテスト広告の機能の詳細については、テスト広告の説明をご覧ください。

広告をリクエストするタイミング

ネイティブ広告を表示するアプリでは、実際に表示する前に広告をリクエストできます。通常はこの方法がおすすめです。たとえば、ネイティブ広告を含むアイテムリストを表示するアプリでは、ユーザーがビューをスクロールしなければ表示されない広告や、まったく表示されない可能性がある広告が含まれている場合でも、そのリストに含まれるネイティブ広告をすべて読み込むことができます。

広告の表示

ネイティブ広告が読み込まれると、SDK がそれに対応する広告フォーマットのリスナーを呼び出します。広告を表示するのはアプリの仕事ですが、必ずしも急ぐ必要はありません。システム定義の広告フォーマットを簡単に表示できるようにするため、SDK には次のような便利なリソースがあります。

広告ビュークラス

システム定義フォーマットには、それぞれに対応する広告ビュークラスがあります。アプリ インストール広告の場合は NativeAppInstallAdView、コンテンツ広告の場合は NativeContentAdView です。これらの広告ビュークラスは ViewGroup で、対応するフォーマットの広告のルートとして使う必要があります。たとえば、1 つの NativeContentAdView は 1 つのコンテンツ広告に対応します。その広告のアセット表示に使われるビュー(スクリーンショット アセットを表示する ImageView など)はすべて、NativeContentAdView オブジェクトの子になります。

LinearLayout を使ってアセットビューを表示するコンテンツ広告のビュー階層は、次のようになります。

<com.google.android.gms.ads.formats.NativeContentAdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
    android:orientation="vertical"
    ... >
        <LinearLayout
        android:orientation="horizontal"
        ... >
          <TextView
            android:id="@+id/contentad_headline"
            ... />
         </LinearLayout>

         // Other assets such as image or media view, call to action, etc follow.
         ...
    </LinearLayout>
</com.google.android.gms.ads.formats.NativeContentAdView>

次のサンプルコード スニペットでは、NativeContentAdView を作成して NativeContentAd を入力しています。

Java

AdLoader.Builder builder = new AdLoader.Builder(this, "<your ad unit ID>")
    .forContentAd(new NativeContentAd.OnContentAdLoadedListener() {
        @Override
        public void onContentAdLoaded(NativeContentAd nativeContentAd) {
            // Assumes you have a placeholder FrameLayout in your View layout
            // (with id fl_adplaceholder) where the ad is to be placed.
            FrameLayout frameLayout =
                findViewById(R.id.fl_adplaceholder);
            // Assumes that your ad layout is in a file call ad_unified.xml
            // in the res/layout folder
            NativeContentAdView adView = (NativeContentAdView) getLayoutInflater()
                .inflate(R.layout.ad_content, null);
            // This method sets the text, images and the native ad, etc into the ad
            // view.
            populateContentAdView(nativeContentAd, adView);
            frameLayout.removeAllViews();
            frameLayout.addView(adView);
        }
    });

Kotlin

val builder = AdLoader.Builder(this, "<your ad unit ID>")
    .forContentAd { contentAd ->
        // Assumes that your ad layout is in a file call ad_content.xml
        // in the res/layout folder
        val adView = layoutInflater
                .inflate(R.layout.ad_content, null) as NativeContentAdView
        // This method sets the text, images and the native ad, etc into the ad
        // view.
        populateNativeContentAdView(contentAd, adView)
        // Assumes you have a placeholder FrameLayout in your View layout
        // (with id ad_frame) where the ad is to be placed.
        ad_frame.removeAllViews()
        ad_frame.addView(adView)
    }

広告ビュークラスには、個々のアセットで使うビューの登録に使用するメソッドと、NativeAd オブジェクト自体を登録するためのメソッドもあります。この方法でビューを登録すると、SDK で次のようなタスクを自動的に処理できるようになります。

  • クリックの記録
  • インプレッションの記録(画面に最初のピクセルが表示されたとき)
  • AdChoices オーバーレイの表示

AdChoices オーバーレイ

AdChoices オーバーレイは、SDK によってすべての広告ビューに付加されます。AdChoices ロゴが自動的に挿入されるため、ネイティブ広告ビューのご希望の隅のスペースを空けておいてください。また、AdChoices オーバーレイは見やすいことが重要であるため、その背景色と背景画像は適切なものにしてください。オーバーレイのデザインと機能について詳しくは、ネイティブ アドバンス広告のフィールドの説明をご覧ください。

広告の帰属表示

広告の帰属表示は、そのビューが広告であることを示すために表示が義務付けられています。 広告の帰属表示に関するポリシー ガイドラインについては、こちらのページをご覧ください。

サンプルコード

システム定義のネイティブ広告フォーマットを表示する手順は、次のとおりです。

  1. 適切な広告ビュークラスのインスタンスを作成します。
  2. 表示する広告アセットすべてについて、次の処理を行います。
    1. アセットビューに広告オブジェクト内のアセットを入力します。
    2. アセットビューを ViewGroup クラスに登録します。
  3. ネイティブ広告レイアウトに大きなメディア アセットが含まれている場合は、MediaView を登録します。
  4. 広告オブジェクトを ViewGroup クラスに登録します。

NativeAppInstallAd を表示する関数の例を次に示します。

Java

private void displayAppInstallAd(ViewGroup parent, NativeAppInstallAd ad) {

    // Inflate a layout and add it to the parent ViewGroup.
    LayoutInflater inflater = (LayoutInflater) parent.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    NativeAppInstallAdView adView = (NativeAppInstallAdView) inflater
            .inflate(R.layout.my_ad_layout, parent);

    // Locate the view that will hold the headline, set its text, and call the
    // NativeAppInstallAdView's setHeadlineView method to register it.
    TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
    headlineView.setText(ad.getHeadline());
    adView.setHeadlineView(headlineView);

    ...
    // Repeat the above process for the other assets in the NativeAppInstallAd
    // using additional view objects (Buttons, ImageViews, etc).
    ...

    // If the app is using a MediaView, it should be
    // instantiated and passed to setMediaView. This view is a little different
    // in that the asset is populated automatically, so there's one less step.
    MediaView mediaView = (MediaView) adView.findViewById(R.id.ad_media);
    adView.setMediaView(mediaView);

    // Call the NativeAppInstallAdView's setNativeAd method to register the
    // NativeAdObject.
    adView.setNativeAd(ad);

    // Ensure that the parent view doesn't already contain an ad view.
    parent.removeAllViews();

    // Place the AdView into the parent.
    parent.addView(adView);
}

Kotlin

fun displayAppInstallAd(parent: ViewGroup, ad: NativeAppInstallAd) {

    // Inflate a layout and add it to the parent ViewGroup.
    val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
            as LayoutInflater
    val adView = inflater.inflate(R.layout.my_ad_layout, parent) as NativeAppInstallAdView

    // Locate the view that will hold the headline, set its text, and use the
    // NativeAppInstallAdView's headlineView property to register it.
    val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
    headlineView.text = ad.headline
    adView.headlineView = headlineView

    ...
    // Repeat the above process for the other assets in the NativeAppInstallAd using
    // additional view objects (Buttons, ImageViews, etc).
    ...

    // If the app is using a MediaView to display video, it should be instantiated
    // and assign to the mediaView property. This view is a little different in that
    // the asset is populated automatically, so there's one less step.
    val mediaView = adView.findViewById<MediaView>(R.id.ad_media)
    adView.mediaView = mediaView

    // Call the NativeAppInstallAdView's setNativeAd method to register the
    // NativeAdObject.
    adView.setNativeAd(ad)

    // Ensure that the parent view doesn't already contain an ad view.
    parent.removeAllViews()

    // Place the AdView into the parent.
    parent.addView(adView)
}

個々のタスクのコードは次のようになります。

レイアウトの拡張

Java

LayoutInflater inflater = (LayoutInflater) parent.getContext()
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
NativeAppInstallAdView adView = (NativeAppInstallAdView) inflater
        .inflate(R.layout.my_ad_layout, parent);

Kotlin

val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
        as LayoutInflater
val adView = inflater.inflate(R.layout.my_ad_layout, parent) as NativeAppInstallAdView

この例では、アプリ インストール広告の表示用ビューを含む XML レイアウトを拡張し、NativeAppInstallAdView への参照を配置しています。このほか、フラグメントやアクティビティに既存の NativeAppInstallAdView があればそれを再利用する方法や、レイアウト ファイルを使わずにインスタンスを動的に作成する方法もあります。

アセットビューの設定と登録

このサンプルコードでは、広告見出しの表示に使うビューを特定してから、広告オブジェクトで提供される文字列アセットを使ってテキストを設定し、それを次のNativeAppInstallAdView オブジェクトに登録しています。

Java

TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
headlineView.setText(ad.getHeadline());
adView.setHeadlineView(headlineView);

Kotlin

val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
headlineView.text = ad.headline
adView.headlineView = headlineView

ビューを特定して値を設定し、広告ビュークラスに登録するこのプロセスは、アプリが表示するネイティブ広告オブジェクトで提供されるアセットごとに繰り返す必要があります。

クリックの処理

次に、広告リスナーを使ってクリック イベントをモニタリングするサンプル スニペットを示します。

Java

.withAdListener(new AdListener() {
    @Override onAdClicked() {
      // Log the click event or other custom behavior.
    }
})

Kotlin

.withAdListener(object : AdListener() {
    override fun onAdClicked() {
      // Log the click event or other custom behavior.
    }
})

MediaView の登録

MediaView はメインのメディア アセットを表示するための特別な View で、次のように動作します。

  • 読み込まれた広告に動画アセットがある場合は、その動画がバッファリングされ、MediaView 内で再生が始まります。
  • 読み込まれた広告に動画アセットがない場合は、代わりに最初の画像アセットがダウンロードされ、MediaView 内に配置されます。

MediaView は、XML レイアウトで定義することも、動的に作成することもできる View です。他のアセットビューの場合と同様に、NativeAdView のビュー階層内に配置してください。MediaView を使用しているアプリでは、それをアセットに設定する必要はありません。ただし、次のように NativeAdView には登録してください。

Java

MediaView mediaView = adView.findViewById(R.id.ad_media);
adView.setMediaView(mediaView);

Kotlin

adView.mediaView = adView.findViewById(R.id.ad_media)

ネイティブ広告オブジェクトの登録

最後に、ネイティブ広告オブジェクトを表示するビューに、オブジェクトを登録します。

Java

adView.setNativeAd(ad);

Kotlin

adView.setNativeAd(ad)

ネイティブ動画

一部のネイティブ広告には、画像、テキスト、数値に加え、動画アセットが含まれています。広告によっては動画アセットが含まれておらず、含まれている場合でも、必ずしもアプリに表示しなくてもかまいません。

動画の設定と表示をシンプルにするため、Mobile Ads SDK には次の動画関連クラスが用意されています。

VideoOptions

VideoOptions クラスを使うと、ネイティブ動画アセットの動作方法をアプリで設定できます。 VideoOptions オブジェクトは、AdLoader の構成時に使う NativeAdOptions オブジェクトに割り当てる必要があります。次の例をご覧ください。

Java

VideoOptions videoOptions = new VideoOptions.Builder()
        .setStartMuted(false)
        .build();

NativeAdOptions adOptions = new NativeAdOptions.Builder()
        .setVideoOptions(videoOptions)
        .build();

AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forAppInstallAd( ... )
        .forContentAd( ... )
        .withNativeAdOptions(adOptions)
        .build();

Kotlin

val videoOptions = VideoOptions.Builder()
        .setStartMuted(false)
        .build()

val adOptions = NativeAdOptions.Builder()
        .setVideoOptions(videoOptions)
        .build()

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forAppInstallAd( ... )
        .forContentAd( ... )
        .withNativeAdOptions(adOptions)
        .build()

現在 VideoOptions.Builder クラスで提供しているメソッドは、setStartMuted() メソッド 1 つです。これは動画アセットをミュート状態で開始すべきかどうかを SDK に伝えるメソッドで、デフォルト値は true です。

VideoController

VideoController クラスは、動画アセットに関する情報の取得に使用します。 アプリで NativeAppInstallAd からコントローラへの参照を取得するには、getVideoController()メソッドを呼び出します。次の例をご覧ください。

Java

VideoController vc = myNativeAd.getVideoController();

Kotlin

val vc = myNativeAd.videoController

このメソッドは常に VideoController オブジェクトを返します。広告内に動画アセットがない場合でも同様です。

VideoController には、動画の状態を問い合わせるための、次のようなメソッドがあります。

  • hasVideoContent() - 広告に動画アセットがある場合は true を、そうでない場合は false を返します。
  • getAspectRatio() - 動画のアスペクト比(横/縦)を返します。動画アセットがない場合はゼロを返します。

VideoController.VideoLifecycleCallbacks クラスは、動画アセットのライフサイクルでイベントが発生したときに通知を受け取るために使うこともできます。次の例をご覧ください。

Java

VideoController vc = nativeAd.getVideoController();

vc.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
    public void onVideoEnd() {
        // Here apps can take action knowing video playback is finished.
        // It's always a good idea to wait for playback to complete before
        // replacing or refreshing a native ad, for example.
        super.onVideoEnd();
    }
});

Kotlin

val vc = nativeAd.videoController

vc.setVideoLifecycleCallbacks(object : VideoController.VideoLifecycleCallbacks() {
    override fun onVideoEnd() {
        // Here apps can take action knowing video playback is finished.
        // It's always a good idea to wait for playback to complete before
        // replacing or refreshing a native ad, for example.
        super.onVideoEnd()
    }
})

広告の破棄

ネイティブ広告の表示が終わったら、その広告を必ず破棄し、ガベージ コレクションで適切に処理されるようにします。

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

その他のリソース

GitHub のサンプル

  • ネイティブ アドバンス広告のサンプルアプリ: Java | Kotlin

Codelab

次のステップ

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。