Native Ads

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

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

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

前提条件

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

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

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

/6499/example/native

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

Mobile Ads SDK のテスト広告の仕組みについてさらに詳しくは、テスト広告でご確認いただけます。

広告の読み込み

ネイティブ広告には、アプリ インストール広告とコンテンツ広告の 2 つのシステム定義フォーマットがあります。

どちらの広告のタイプも、GADUnifiedNativeAd という 1 つのクラスで表されます。このクラスのインスタンスにはネイティブ広告のアセットが含まれます。なお、GADUnifiedNativeAd で示される広告のタイプによっては、一部のフィールドに値が入力されません(nil になります)。

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

Google Ad Managerでは、システム定義のネイティブ広告フォーマットに加え、アセットのカスタムリストを定義して、独自のネイティブ広告フォーマットを作成することもできます。こうしたフォーマットはカスタムのネイティブ広告フォーマットと呼ばれ、直接販売のネイティブ広告で使用できます。カスタムのネイティブ広告フォーマットを使用すると、アプリに任意の構造のデータを渡すことができます。こうした広告は GADNativeCustomTemplateAd クラスで表されます。

カスタムのネイティブ広告フォーマットでは、パブリッシャー様による独自の「テンプレート」(アセットの名前とタイプのリスト)が定義されるため、カスタム テンプレート広告とも呼ばれます。カスタムのネイティブ広告とカスタム テンプレート広告は、同じ種類の広告です。

広告ローダーを初期化する

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

Swift

adLoader = GADAdLoader(adUnitID: "/6499/example/native",
    rootViewController: self,
    adTypes: [ kGADAdLoaderAdTypeUnifiedNative ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/6499/example/native"
    rootViewController:rootViewController
               adTypes:@[ ... ad type constants ... ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

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

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

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

広告ローダーのデリゲートには、広告タイプ専用のプロトコルを実装する必要があります。unifiedネイティブ広告の場合は次のようになります。

  • GADUnifiedNativeAdLoaderDelegate このプロトコルには、統合ネイティブ広告の読み込み時にデリゲートに送信されるメッセージが含まれます。

    Swift

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

    Objective-C

    - (void)adLoader:(GADAdLoader *)adLoader
        didReceiveNativeAd:(GADUnifiedNativeAd *)nativeAd;
    
  • GADNativeCustomTemplateAdLoaderDelegate このプロトコルには、カスタム テンプレート広告の読み込み時にデリゲートに送信されるメッセージが含まれます。

    Swift

    func adLoader(_ adLoader: GADAdLoader,
                    didReceive nativeCustomTemplateAd: GADNativeCustomTemplateAd)
    

    Objective-C

    - (void)adLoader:(GADAdLoader *)adLoader
        didReceiveNativeCustomTemplateAd:(GADNativeCustomTemplateAd *) nativeCustomTemplateAd;
    

広告をリクエストする

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

Swift

adLoader.load(DFPRequest())

Objective-C

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

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

1 つの GADAdLoader で複数の広告をリクエストすることができますが、1 回に 1 件ずつリクエストする必要があります。GADAdLoader を再利用する場合は、それぞれのリクエストが完了するのを待ってから、loadRequest: を再度呼び出して次のリクエストを開始するようにしてください。複数の広告を同時にリクエストする必要がある場合は、複数の GADAdLoader オブジェクトを使用できます。

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

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

広告のプリフェッチは効果的な手法ですが、表示されないままになっている古い広告はいつまでも保持しないことが重要です。1 時間以上たっても表示されずに保持されているネイティブ広告のオブジェクトは、破棄して新しいリクエストの広告に置き換えてください。

失敗したリクエストの処理

上述のプロトコルは、広告が読み込まれなかったときに送信されるメッセージを定義する GADAdLoaderDelegate プロトコルを拡張したものです。GADRequestError オブジェクトを使用してエラーの原因を調べることができます。

Swift

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

Objective-C

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

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

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

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

Swift

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

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

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

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

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

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

Objective-C

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

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

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

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

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

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

広告を表示する

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

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

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