ネイティブ広告

ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。ストーリーボードですでに使用しているクラスと同じクラスで表示され、アプリのビジュアル デザインに合わせて形式が調整されることがあります。

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

ネイティブ広告の実装を 2 つの段階に大きく分けると、SDK を使用して広告を読み込み、アプリにその広告コンテンツを表示するということになります。

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

前提条件

常にテスト広告でテストする

アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。

下記の iOS のネイティブ広告向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。

ca-app-pub-3940256099942544/3986624511

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

Google Mobile Ads SDK のテスト広告について詳しくは、テスト広告を有効にするをご覧ください。

広告を読み込む

ネイティブ広告の読み込みには GADAdLoader クラスを使用します。このクラスは、GADAdLoaderDelegate プロトコルに沿って、ネイティブ広告のデリゲートにメッセージを送信します。

広告ローダを初期化する

広告を読み込むには、事前に広告ローダを初期化する必要があります。次のコードは、GADAdLoader を初期化する方法を示したものです。

Swift

adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  // To receive native ads, the ad loader's delegate must
  // conform to the NativeAdLoaderDelegate protocol.
  adTypes: [.native],
  // Use nil for default options.
  options: nil)

nativeAdUnitID は、実際の広告ユニット ID に置き換えられます。

Objective-C

self.adLoader =
    [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                       // The UIViewController parameter is optional.
                       rootViewController:self
                                  // To receive native ads, the ad loader's delegate must
                                  // conform to the NativeAdLoaderDelegate protocol.
                                  adTypes:@[ GADAdLoaderAdTypeNative ]
                                  // Use nil for default options.
                                  options:nil];

kNativeAdUnitID は、実際の広告ユニット ID に置き換えられます。

広告ユニット ID(テスト ID を使用できる)と、リクエストするネイティブ フォーマットを指定するために adTypes 配列に渡す定数値、そして options パラメータで設定するオプションが必要となります。options パラメータで設定可能な値のリストは、ネイティブ広告オプションの設定に関するページでご確認いただけます。

adTypes 配列には、次の定数値を含める必要があります。

広告ローダのデリゲートを実装する

広告ローダのデリゲートには、広告の種類に合ったプロトコルを実装する必要があります。 ネイティブ広告の場合、GADNativeAdLoaderDelegate プロトコルには、ネイティブ広告の読み込み時にデリゲートに送信されるメッセージが含まれます。

Swift

func adLoader(_ adLoader: AdLoader, didReceive nativeAd: NativeAd) {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self

  // TODO: Display the native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self;

  // TODO: Display the native ad.
}

広告をリクエストする

GADAdLoader を初期化したら、その loadRequest: メソッドを呼び出して広告をリクエストします。

Swift

adLoader.load(Request())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

GADAdLoaderloadRequest: メソッドは、バナーやインタースティシャルの場合と同じ GADRequest オブジェクトを受け取ります。リクエスト オブジェクトは、他の広告タイプの場合と同様に、ターゲット設定情報を追加するのに使えます。

複数の広告を読み込む(省略可)

1 回のリクエストで複数の広告を読み込むには、GADAdLoader を初期化するときに GADMultipleAdsAdLoaderOptions オブジェクトを設定します。

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5
adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  adTypes: [.native],
  options: [multipleAdOptions])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdOptions = [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdOptions.numberOfAds = 5;

self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                                   // The UIViewController parameter is optional.
                                   rootViewController:self
                                              adTypes:@[ GADAdLoaderAdTypeNative ]
                                              options:@[ multipleAdOptions ]];

リクエストあたりの広告数は最大 5 個です。なお、リクエストされた数の広告を SDK が返すことは保証されません。

返される Google 広告はすべて異なります。ただし、予約済み広告在庫またはサードパーティの購入者からの広告については、一意であるとは限りません。

メディエーションを使用している場合は、GADMultipleAdsAdLoaderOptions クラスを使用しないでください。複数のネイティブ広告のリクエストは、メディエーション用に設定されている広告ユニット ID では機能しません。

読み込みが完了したタイミングを特定する

アプリで loadRequest: を呼び出した後に、次のメソッドを呼び出してリクエストの結果を取得できます。

1 つの広告をリクエストすると、これらのメソッドのいずれかが 1 回呼び出されます。

複数の広告をリクエストすると、上述のメソッドが 1 回以上コールバックされますが、リクエストされた広告の最大数を超えて呼び出されることはありません。

また、GADAdLoaderDelegate では adLoaderDidFinishLoading のコールバックを使用できます。このデリゲート メソッドは、広告ローダが広告の読み込みを完了し、そのリクエストについて報告すべき他の広告やエラーがないことを示します。このメソッドを使用して複数のネイティブ広告をまとめて読み込む方法について、次に例を示します。

Swift

func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
  // The adLoader has finished loading ads.
}

Objective-C

- (void)adLoaderDidFinishLoading:(GADAdLoader *)adLoader {
  // The adLoader has finished loading ads.
}

失敗したリクエストを処理する

このプロトコルは、広告が読み込まれなかったときに送信されるメッセージを定義する GADAdLoaderDelegate プロトコルを拡張したものです。

Swift

func adLoader(_ adLoader: AdLoader, didFailToReceiveAdWithError error: any Error) {
  // The adLoader failed to receive an ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(NSError *)error {
  // The adLoader failed to receive an ad.
}

ネイティブ広告イベントの通知を受け取る

ネイティブ広告の操作に関連するイベントについて通知を受け取るには、ネイティブ広告のデリゲート プロパティを設定します。

Swift

// Set the delegate before making an ad request.
adLoader.delegate = self

Objective-C

// Set the delegate before making an ad request.
self.adLoader.delegate = self;

次に、GADNativeAdDelegate を実装して、以下のデリゲートの呼び出しを受け取ります。

Swift

func nativeAdDidRecordImpression(_ nativeAd: NativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

ベスト プラクティス

広告を読み込む際は、次のルールに従ってください。

  • リストでネイティブ広告を使用するアプリでは、広告のリストをプリキャッシュします。

  • 広告をプリキャッシュする場合は、1 時間後にキャッシュをクリアして再読み込みします。

  • 前のリクエストの読み込みが完了したことを adLoaderDidFinishLoading: が示すまで、GADAdLoaderloadRequest: を再度呼び出さないでください。

  • ネイティブ広告のキャッシュ保存は必要なものだけに限定します。たとえばプリキャッシュする場合は、画面にすぐに表示される広告のみをキャッシュに保存します。ネイティブ広告はメモリ使用量が大きいため、ネイティブ広告を破棄せずキャッシュに保存すると、過剰にメモリを使用することになります。

  • ネイティブ広告が不要になったら破棄します。

広告を表示する

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