ネイティブ広告

ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。作成済みのレイアウトに溶け込むように表示され、ユーザー エクスペリエンスの視覚デザインに合わせてフォーマットすることができます。コーディングの観点では、ネイティブ広告を読み込むときに広告のアセットを含む NativeAd オブジェクトをアプリで受け取り、(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 は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。

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

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

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

UnifiedNativeAd を表示する

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

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

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