ネイティブ広告

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

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

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

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

前提条件

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

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

テスト広告を読み込むには、専用のテスト広告ユニット ID を使用すると、 iOS 向けのネイティブ広告:

ca-app-pub-3940256099942544/3986624511

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

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

広告を読み込む

ネイティブ広告は GADAdLoader クラスで委任されたメッセージに従って、代理人にメッセージを送信します。 GADAdLoaderDelegate 構成されます。

広告ローダを初期化する

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

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

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

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

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

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

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

広告をリクエスト

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

Swift

adLoader.load(GADRequest())

Objective-C

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

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

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

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

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

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

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

メディエーションを使用している場合は、GADMultipleAdsAdLoaderOptions クラスを使用しないでください。 複数のネイティブ広告のリクエストは、現時点では 設定されていることを確認できます

読み込みが完了したことを見極める

アプリが loadRequest: を呼び出した後に、次のコマンドを使用してリクエストの結果を取得できます。 呼び出します。

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

複数の広告をリクエストすると、上記へのコールバックが少なくとも 1 回発生します。 最大数を超えることはできません。

また、GADAdLoaderDelegate では adLoaderDidFinishLoading のコールバックを使用できます。このデリゲート メソッドは、広告ローダの読み込みが完了したことを示します。 他の広告やエラーは報告されません。こちらが これを使用して、複数のネイティブ広告を一度に読み込む方法の例を以下に示します。

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      // The UIViewController parameter is nullable.
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

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

上記のプロトコルは、GADAdLoaderDelegate プロトコルを拡張するものです。 広告の読み込みに失敗したときに送信されるメッセージです。

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

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

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

次に GADNativeAdDelegate 次の委任呼び出しを受ける必要があります。

Swift

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

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

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

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

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

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // 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 時間後に再読み込みします。

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

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

  • 使用しなくなったネイティブ広告を破棄します。

広告を表示する

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