ネイティブ広告

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

大まかに言うと、ネイティブ広告の実装は、SDK を使って広告を読み込み、アプリにその広告コンテンツを表示するという 2 つの段階に分かれています。このページでは、SDK を使ったネイティブ広告の読み込みについて説明します。

前提条件

広告を読み込む

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

AdLoader の作成

統合型ネイティブ広告の読み込みが可能な AdLoader を作成する方法については、次のコードをご覧ください。

Java

    AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
            @Override
            public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                // Show the 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")
        .forUnifiedNativeAd { ad : UnifiedNativeAd ->
            // Show the 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()
    

UnifiedNativeAd フォーマットの準備

上記の最初のメソッドを使用すると、次の UnifiedNativeAd フォーマットに対応した AdLoader を準備できます。

forUnifiedNativeAd()
このメソッドを呼び出すと、統合型ネイティブ広告をリクエストするように AdLoader が設定されます。 広告の読み込みに成功すると、リスナー オブジェクトの onUnifiedNativeAdLoaded() メソッドが呼び出されます。

AdLoader が広告リクエストを行うと、パブリッシャー様に最大限の収益をもたらす広告が 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.
    })
    

AdListener オブジェクトのネイティブ広告での動作と、バナーやインタースティシャルでの動作には、1 つの大きな違いがあります。AdLoader には、広告が読み込まれたときに使うリスナーとして、フォーマット固有のリスナー(UnifiedNativeAd.OnUnifiedNativeAdLoadedListener など)があるため、ネイティブ広告の読み込みに成功したときに AdListener から onAdLoaded() メソッドが呼び出されることはありません

広告の読み込み

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

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() を呼び出す必要があります。

onUnifiedNativeAdLoaded() コールバックで isLoading() を確認する方法について、次に例を示します。

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
            .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
        @Override
        public void onUnifiedNativeAdLoaded(UnifiedNativeAd ad) {
            ...
            // some code that displays the 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")
        .forUnifiedNativeAd {
            ...
            // some code that displays the 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 に置き換えてください。

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。

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

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

UnifiedNativeAd を表示する

広告を読み込んだら、あとは広告をユーザーに表示するだけです。 方法はネイティブ アドバンスに関するガイドでご確認ください。