フィードバックをお寄せください。Google Mobile Ads SDK の改善に役立てさせていただきます。Google Mobile Ads SDK 年次アンケート(2023 年)にご回答をお願いいたします。締め切りは 2023 年 5 月 5 日です。

ネイティブ広告

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。すでにストーリーボードで使用しているものと同じクラスを使って表示され、アプリの視覚デザインに合わせて形式を調整することもできます。ネイティブ広告が読み込まれる際は、アプリがその広告のアセットを含むオブジェクトを受け取り、(SDK ではなく)アプリがそのアセットの表示処理を実行します。他の広告フォーマットとは異なり、お客様ご自身が広告のデザインをカスタマイズすることはできません。

このガイドでは、Google Mobile Ads SDK を使用して iOS アプリに ネイティブ広告を実装する方法と、その過程で考慮すべき重要事項について説明します。

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

ネイティブ広告の読み込みがすでに完了していて、表示方法を知りたい場合は、このページをスキップしてネイティブ テンプレートまたはネイティブ アドバンスに関するガイドに進んでいただいてもかまいません。

前提条件

テストには必ずテスト広告を使用する

アプリの開発やテストの際は必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告でテストを行うと、アカウントの停止につながる可能性があります。

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

ca-app-pub-3940256099942544/3986624511

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

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

広告を読み込む

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

広告ローダを初期化する

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

Swift

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

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    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 時間以上たっても表示されずに保持されているネイティブ広告のオブジェクトは、破棄して新しいリクエストの広告に置き換えてください。

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

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

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

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

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

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdsOptions.numberOfAds = 5

    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
        adTypes: [.native],
        options: [multipleAdsOptions])
    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:YOUR_AD_UNIT_ID
          rootViewController:self
                     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 application to become inactive and
  // open a new application.
}

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 application to become inactive and
  // open a new application.
}

広告を表示する

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