ネイティブ広告は、プラットフォームに備わっている UI コンポーネントを通じてユーザーに表示される広告アセットです。ストーリーボードですでに使用しているクラスと同じクラスで表示され、アプリのビジュアル デザインに合わせてフォーマットできます。
ネイティブ広告が読み込まれる際は、アプリがその広告のアセットを含むオブジェクトを受け取り、(Google Mobile Ads SDK ではなく)アプリがそのアセットの表示処理を実行します。
大まかに言うと、ネイティブ広告の実装は、SDK を使用して広告を読み込み、アプリに広告コンテンツを表示するという 2 つの段階に分かれています。
このページでは、SDK を使用してネイティブ広告を読み込む方法について説明します。
前提条件
- スタートガイドを完了している。
必ずテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。
テスト広告を読み込む際は、次に示す iOS ネイティブ広告向けのテスト専用広告ユニット ID を使うと簡単です。
/21775744923/example/native
この ID は、すべてのリクエストに対してテスト広告を返すように構成されており、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、テスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Google Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
広告を読み込む
ネイティブ広告の読み込みには GADAdLoader
クラスを使用します。このクラスは、GADAdLoaderDelegate
プロトコルに沿って、ネイティブ広告のデリゲートにメッセージを送信します。
システム定義のネイティブ広告フォーマットに加えて、直接販売のネイティブ広告に使用できる独自のカスタム ネイティブ広告フォーマットを作成することもできます。カスタム ネイティブ広告フォーマットを使用すると、アプリに任意の構造化データを渡すことができます。こうした広告は GADCustomNativeAd
クラスで表されます。
広告ローダを初期化する
広告を読み込むには、広告ローダを初期化する必要があります。
次のコードは、GADAdLoader
を初期化する方法を示しています。
Swift
adLoader = GADAdLoader(adUnitID: "/21775744923/example/native",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"/21775744923/example/native"
// The UIViewController parameter is nullable.
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,
Receive 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
オブジェクトを受け取ります。他の広告タイプの場合と同様に、リクエスト オブジェクトを使用してターゲット設定情報を追加できます。
読み込みが完了したことを見極める
アプリで loadRequest:
を呼び出した後に、次のメソッドを呼び出してリクエストの結果を取得できます。
GADAdLoaderDelegate
内のadLoader:didFailToReceiveAdWithError:
GADNativeAdLoaderDelegate
内のadLoader:didReceiveNativeAd:
1 つの広告をリクエストすると、これらのメソッドのいずれかが 1 回呼び出されます。
失敗したリクエストを処理する
上記のプロトコルは、広告の読み込みに失敗したときに送信されるメッセージを定義する GADAdLoaderDelegate
プロトコルを拡張します。
Swift
public func adLoader(_ adLoader: GADAdLoader,
didFailToReceiveAdWithError error: NSError)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didFailToReceiveAdWithError:(NSError *)error;
ネイティブ広告イベントの通知を受け取る
ネイティブ広告の操作に関連するイベントの通知を受け取るには、ネイティブ広告の delegate プロパティを設定します。
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 時間後に再読み込みします。
adLoaderDidFinishLoading:
で示されているように、前のリクエストの読み込みが完了するまで、GADAdLoader
でloadRequest:
を再度呼び出さないでください。ネイティブ広告のキャッシュ保存は、必要なものに限定します。たとえばプリキャッシュでは、画面にすぐに表示される広告のみをキャッシュに保存します。ネイティブ広告のメモリ使用量は大きく、ネイティブ広告を破棄せずにキャッシュに保存すると、メモリ使用量が増加します。
使用しなくなったネイティブ広告を破棄します。
広告を表示する
広告を読み込んだら、あとは広告をユーザーに表示するだけです。方法はネイティブ アドバンスに関するガイドでご確認ください。