ネイティブ広告

ネイティブ広告は、広告の管理画面で表示される UI コンポーネントを通じて表示される広告アセットです。 ネイティブに実装されています同じタイプのビューを使用して表示され、 レイアウトはすでに作成中ですが、 アプリのデザインを改善できます。

ネイティブ広告が読み込まれると、アプリはその広告のアセットを含む広告オブジェクトを受け取ります。 Google Mobile Ads SDK ではなく 表示を担います

ネイティブ広告を効果的に実装するには、大きく分けて次の 2 つの要素があります。 SDK を使用して広告を読み込み、アプリに広告コンテンツを表示する。

このページでは、SDK を使用して読み込む方法について説明します。 ネイティブ広告

前提条件

必ずテスト広告でテストする

アプリを作成、テストする際は、テスト広告ではなく、 配信します。

テスト広告を読み込むには、専用のテスト広告ユニット ID を使う方法が最も簡単です Android のネイティブ広告の場合:

ca-app-pub-3940256099942544/2247696110

すべてのリクエストに対してテスト広告を返すように特別に構成されており、 独自のアプリでコーディング、テスト、デバッグの際に使用できます。必ず これを実際の広告ユニット ID に置き換えてから、アプリを公開してください。

Google Mobile Ads SDK のテスト広告の仕組みについて詳しくは、 テスト広告

広告を読み込む

ネイティブ広告は AdLoader クラス、 それぞれ独自の Builder 作成時にカスタマイズできます。AdLoader にリスナーを追加する アプリでは、作成可能なネイティブ広告のタイプをアプリで指定する 受信します。その後、AdLoader はそれらのタイプのみをリクエストします。

AdLoader を作成する

次のコードは、ネイティブを読み込める AdLoader のビルド方法を示しています。 広告:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // 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")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // 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()

forNativeAd() メソッドが AdLoaderNativeAd 形式用に準備します。 広告が正常に読み込まれると、リスナー オブジェクトの onNativeAdLoaded() メソッドが呼び出されます。

AdLoader を使用して AdListener を設定する(省略可)

AdLoader を作成すると、 withAdListener 関数が AdListener: できます。このメソッドは、唯一のパラメータとして AdListener を受け取り、 広告のライフサイクル イベントが発生したときの AdLoader からのコールバック:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

広告をリクエスト

AdLoader の作成が完了したら、それを使用して広告のリクエストを行います。 これには、loadAd()loadAds() の 2 つのメソッドがあります。

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 から返されるという保証はありません。

返される Google 広告はそれぞれ異なりますが、 予約広告枠や第三者購入者は、必ずしも一意であるとは限りません。

メディエーションを使用している場合は、loadAds() メソッドを 複数のネイティブ広告は、現時点では 設定されていることを確認できます

コールバック

loadAd() の呼び出しの後、以前に定義された リスナー メソッドを使ってネイティブ広告オブジェクトを配信するか、エラーを報告します。

loadAds() の呼び出しの後、このようなコールバックが複数回(少なくとも 1 回、 リクエストする広告の数までです。複数の広告をリクエストするアプリ コールバックの実装で AdLoader.isLoading() を呼び出して、 読み込みプロセスが完了したかどうかを判別します。

次の例は、isLoading() onNativeAdLoaded() コールバック:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // 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")
    .forNativeAd {
        ...
        // 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)

リソースを解放する

読み込まれたネイティブ広告では、必ず destroy() メソッドを使用してください。このリリース メモリリークを防止できます。

アクティビティの NativeAd で、すべての参照が破棄されるようにしてください。 onDestroy() メソッドを使用します。

onNativeAdLoaded コールバックで、既存の依存関係をすべて破棄し、 指定することもできます。

もう 1 つの重要なチェックは、アクティビティが破棄されたかどうかです。破棄されている場合は destroy() を呼び出します。 すぐに返すことができます:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

ベスト プラクティス

広告を読み込む際は以下のルールを守ってください。

  • リスト内のネイティブ広告を使用するアプリでは、広告のリストを事前キャッシュに保存する必要があります。

  • 広告を事前キャッシュする場合は、キャッシュをクリアして、1 時間後に再読み込みしてください。

  • loadAd() または 最初のloadAds()日までAdLoaderで リクエストの読み込みが完了しました。

動画広告のハードウェア アクセラレーション

ネイティブ広告のビューで動画広告を適切に表示するには、 ハードウェア 加速 を有効にする必要があります。

ハードウェア アクセラレーションはデフォルトで有効になっていますが、アプリによってはハードウェア アクセラレーションが 無効にすることもできます。該当する場合は、ハードウェアの有効化をおすすめします。 広告を使用する Activity クラスの高速化。

ハードウェア アクセラレーションを有効にする

ハードウェア アクセラレーションをオンにしてアプリが正しく動作しない場合 個々のアクティビティに対しても制御できます。Google Cloud コンソールで ハードウェア アクセラレーションを無効にする(android:hardwareAccelerated 属性を使用) の <application> および <activity> AndroidManifest.xml 内の要素。次の例では、ハードウェア サービス 1 つのアクティビティでは無効にします。

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

HW アクセラレーション ガイド ハードウェア アクセラレーションを制御するオプションの詳細をご覧ください。備考 ハードウェア アクセラレーションが無効な場合は個々の広告ビューを有効にできない アクティビティが無効になっているため、アクティビティ自体にハードウェア アクセラレーションが必要 有効にします。

広告を表示する

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