ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。すでにストーリーボードで使用しているものと同じクラスを使って表示され、アプリの視覚デザインに合わせて形式を調整することもできます。ネイティブ広告が読み込まれる際は、アプリがその広告のアセットを含むオブジェクトを受け取り、(SDK ではなく)アプリがそのアセットの表示処理を実行します。他の広告フォーマットとは異なり、お客様ご自身が広告のデザインをカスタマイズすることはできません。
このガイドでは、Google Mobile Ads SDK を使用して iOS アプリに ネイティブ広告を実装する方法と、その過程で考慮すべき重要事項について説明します。
大まかに言うと、ネイティブ広告の実装は、SDK を使って広告を読み込み、アプリにその広告コンテンツを表示するという 2 つの段階に分かれています。このページでは、SDK を使った広告の読み込みについて説明します。
ネイティブ広告の読み込みがすでに完了していて、表示方法を知りたい場合は、このページをスキップしてネイティブ テンプレートまたはネイティブ アドバンスに関するガイドに進んでいただいてもかまいません。
前提条件
テストには必ずテスト広告を使用する
アプリの開発やテストの際は必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告でテストを行うと、アカウントの停止につながる可能性があります。
テスト広告は、次に示す iOS ネイティブ アドバンス向けのテスト専用広告ユニット ID を使うと簡単に読み込むことができます。
/6499/example/native
この ID は、すべてのリクエストに対してテスト広告を返すよう特別に構成されており、ご自身のアプリのコーディング、テスト、デバッグで自由に使うことができます。なお、アプリを公開する前に、必ずテスト用 ID をご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
広告を読み込む
ネイティブ広告の読み込みには GADAdLoader
オブジェクトを使用します。このオブジェクトは、GADAdLoaderDelegate
プロトコルに沿って、ネイティブ広告のデリゲートにメッセージを送信します。
Google Ad Manager をご利用の場合は、システム定義のネイティブ広告フォーマットに加え、アセットのカスタムリストを定義することで、独自のネイティブ広告フォーマットも作成していただけます。こうしたフォーマットはカスタムのネイティブ広告フォーマットと呼ばれ、直接販売のネイティブ広告で使用できます。カスタムのネイティブ広告フォーマットを使用すると、アプリに任意の構造のデータを渡すことができます。こうした広告は GADCustomNativeAd
クラスで表されます。
広告ローダを初期化する
広告を読み込むには、事前に広告ローダを初期化する必要があります。次のコードは、GADAdLoader
を初期化する方法を示したものです。
Swift
adLoader = GADAdLoader(adUnitID: "/6499/example/native", rootViewController: self, adTypes: [ .native ], options: [ ... ad loader options objects ... ]) adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"/6499/example/native" rootViewController:rootViewController adTypes:@[ GADAdLoaderAdTypeNative ] options:@[ ... ad loader options objects ... ]]; self.adLoader.delegate = self;
広告ユニット ID(テスト ID を使用できます)と、リクエストするネイティブ フォーマットを指定するために adTypes
配列に渡す定数値、そして options
パラメータで設定するオプションが必要となります。options
パラメータで設定可能な値のリストは、ネイティブ広告オプションの設定に関するページでご確認いただけます。
adTypes
配列には、次の定数値を 1 つ以上含める必要があります。
広告ローダのデリゲートを実装する
広告ローダのデリゲートには、広告の種類に合ったプロトコルを実装する必要があります。ネイティブ広告の場合は次のようになります。
-
GADNativeAdLoaderDelegate
このプロトコルには、ネイティブ広告の読み込み時にデリゲートに送信されるメッセージが含まれます。Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd;
GADCustomNativeAdLoaderDelegate
このプロトコルには、カスタム テンプレート広告の読み込み時にデリゲートに送信されるメッセージが含まれます。Swift
func adLoader(_ adLoader: GADAdLoader, didReceive customNativeAd: GADCustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveCustomNativeAd:(GADCustomNativeAd *) customNativeAd;
広告をリクエストする
GADAdLoader
を初期化したら、その loadRequest:
メソッドを呼び出して広告をリクエストします。
Swift
adLoader.load(GAMRequest())
Objective-C
[self.adLoader loadRequest:[GAMRequest request]];
GADAdLoader
の loadRequest:
メソッドは、バナーやインタースティシャルの場合と同じ GAMRequest
オブジェクトを受け取ります。リクエスト オブジェクトは、他の広告タイプの場合と同様に、ターゲット設定情報を追加するのに使えます。
1 つの GADAdLoader
で複数の広告をリクエストできますが、1 回に 1 個ずつリクエストする必要があります。GADAdLoader
を再利用する場合は、それぞれのリクエストが完了するのを待ってから loadRequest:
を再度呼び出して、次のリクエストを開始するようにしてください。複数の広告を同時にリクエストする必要がある場合は、いつでも複数の GADAdLoader
オブジェクトを使用できます。
広告をリクエストするタイミング
ネイティブ広告を表示するアプリでは、実際に表示する広告を前もってリクエストすることもでき、通常はこの方法がおすすめです。 たとえば、ネイティブ広告を含むアイテムリストを表示するアプリでは、ユーザーがビューをスクロールしなければ表示されない広告や、まったく表示されない可能性がある広告が含まれている場合でも、そのリストに含まれるネイティブ広告を事前にすべて読み込むことができます。
広告のプリフェッチは効果的な手法ですが、表示されないままになっている古い広告はいつまでも保持しないことが重要です。1 時間以上たっても表示されずに保持されているネイティブ広告のオブジェクトは、破棄して新しいリクエストの広告に置き換えてください。
失敗したリクエストを処理する
上記のプロトコルは、広告が読み込まれなかったときに送信されるメッセージを定義する 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. }
広告を表示する
広告を読み込んだら、あとは広告をユーザーに表示するだけです。方法はネイティブ アドバンスに関するガイドでご確認ください。