ネイティブ広告には、追加のカスタマイズを行い、最適な広告エクスペリエンスを実現できる高度な機能が多数用意されています。このガイドでは、ネイティブ広告の高度な機能の使用方法について説明します。
前提条件
- ネイティブ広告フォーマットを統合していること
アセット管理
優先するメディアのアスペクト比のコントロール
メディアのアスペクト比の設定を使用すると、広告クリエイティブのアスペクト比の設定を指定できます。
GADNativeAdMediaAdLoaderOptions mediaAspectRatio
を GADMediaAspectRatio
に設定します。
未設定の場合、返される広告のメディアのアスペクト比は任意です。
設定すると、好みのアスペクト比のタイプを指定してユーザー エクスペリエンスを改善できます。
次の例では、特定のアスペクト比の画像または動画を優先して返すように SDK に指示します。
GADNativeAdMediaAdLoaderOptions *nativeOption = [[GADNativeAdMediaAdLoaderOptions alloc] init];
nativeOption.mediaAspectRatio = GADMediaAspectRatioAny;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOption ]];
画像のダウンロードの制御
画像のダウンロード コントロールを使用すると、SDK から画像アセットが返されるのか、URI のみが返されるのかを選択できます。
GADNativeAdImageAdLoaderOptions disableImageLoading
に BOOL
値を設定します。画像のダウンロード制御はデフォルトで無効になっています。
無効にすると、Google Mobile Ads SDK が画像と URI の両方を入力します。
有効にすると、SDK は URI のみを入力するため、実際の画像はご自身の判断でダウンロードできます。
次の例では、URI のみを返すように SDK に指示しています。
GADNativeAdImageAdLoaderOptions *nativeOption = [[GADNativeAdImageAdLoaderOptions alloc] init];
nativeOption.disableImageLoading = YES;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOption ]];
画像ペイロードのコントロール
一部の広告には、画像が 1 つだけでなく複数含まれています。この機能を使用すると、アプリがすべての画像を表示できるか、1 つの画像のみを表示できるかを指定できます。
GADNativeAdImageAdLoaderOptions shouldRequestMultipleImages
に BOOL
値を設定します。画像ペイロードの制御はデフォルトで無効になっています。
無効にすると、一連の画像を含むアセットでは最初の画像だけを表示するよう SDK に指示することになります。
有効にすると、複数の画像を含むアセットについて、そのすべての画像をアプリで表示できると示すことになります。
次の例では、複数のイメージアセットを返すように SDK に指示します。
GADNativeAdImageAdLoaderOptions *nativeOption = [[GADNativeAdImageAdLoaderOptions alloc] init];
nativeOption.shouldRequestMultipleImages = YES;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOption ]];
AdChoices プレースメント
AdChoices の位置のコントロール
AdChoices の位置コントロールを使用すると、AdChoices アイコンを表示する角を選択できます。
GADNativeAdViewAdOptions preferredAdChoicesPosition
に GADAdChoicesPosition
値を設定します。
設定しない場合、AdChoices アイコンの位置は右上に設定されます。
設定されている場合、AdChoices はリクエストに応じてカスタム ポジションに配置されます。
次の例は、カスタムの AdChoices 画像の位置を設定する方法を示しています。
GADNativeAdViewAdOptions *nativeOptions = [[GADNativeAdViewAdOptions alloc] init];
nativeOptions.preferredAdChoicesPosition = GADAdChoicesPositionTopLeftCorner;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOptions ]];
AdChoices カスタムビュー
AdChoices カスタム ビュー機能を使用すると、AdChoices アイコンをカスタムの位置に配置できます。これは、4 つのコーナーのいずれかのみを指定する AdChoices の位置設定とは異なります。
レンダリングの前に GADAdChoicesView
を使用して GADNativeAd.adChoicesView
プロパティを設定すると、AdChoices コンテンツが GADAdChoicesView
内にレンダリングされます。
次の例は、カスタムの AdChoices ビューを設定する方法を示しています。AdChoices アイコンは GADAdChoicesView
内にレンダリングされます。
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
...
GADAdChoicesView *customAdChoicesView =
[[GADAdChoicesView alloc] initWithFrame: CGRectMake(..., ..., ..., ...)];
[nativeAdView addSubview:customAdChoicesView];
nativeAdView.adChoicesView = customAdChoicesView;
// Associate the native ad view with the native ad object. This is
// required to make the ad clickable.
// Note: this should always be done after populating the ad views.
nativeAdView.nativeAd = nativeAd;
}
Swift
func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADNativeAd) {
refreshAdButton.isEnabled = true
...
// Define a custom position for the AdChoices icon.
let customRect = CGRect(x: 100, y: 100, width: 15, height: 15)
let customAdChoicesView = GADAdChoicesView(frame: customRect)
nativeAdView.addSubview(customAdChoicesView)
nativeAdView.adChoicesView = customAdChoicesView
// Associate the native ad view with the native ad object. This is
// required to make the ad clickable.
// Note: this should always be done after populating the ad views.
nativeAdView.nativeAd = nativeAd;
}
動画をコントロールする
ミュート動作を開始する
ミュート状態で開始する動作では、動画の開始音声を無効または有効にできます。
GADVideoOptions startMuted
に BOOL
値を設定します。ミュート状態で開始する動作はデフォルトで有効になっています。
無効にすると、アプリは動画を音声で開始するようリクエストします。
有効にすると、動画の開始時に音声がミュートされるようにアプリがリクエストします。
次の例は、音声をミュートせずに動画を開始する方法を示しています。
GADVideoOptions *nativeOptions = [[GADVideoOptions alloc] init];
nativeOptions.startMuted = NO;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOptions ]];
カスタム再生コントロール
これにより、動画の再生、一時停止、ミュートを行うためのカスタム動画入力コントロールをリクエストできます。
GADVideoOptions customControlsRequested
に BOOL
値を設定します。カスタム再生コントロールはデフォルトで無効になっています。
無効にすると、動画に SDK レンダリングされた入力コントロールが表示されます。
- 有効にすると、
GADVideoController play
、GADVideoController pause
、GADVideoController setMute
を使用して動画広告を操作できます。
- 広告に動画コンテンツがあり、カスタム コントロールが有効になっている場合は、広告自体にコントロールが表示されないため、広告とともにカスタム コントロールを表示する必要があります。コントロールは、
GADVideoController
で関連するメソッドを呼び出すことができます。
次の例は、カスタムの再生コントロールを含む動画をリクエストする方法を示しています。
GADVideoOptions *nativeOptions = [[GADVideoOptions alloc] init];
nativeOptions.customControlsRequested = YES;
GADAdLoader* adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ nativeOptions ]];
カスタム コントロールが有効になっているかどうかを確認する
返される広告でカスタム動画コントロールが許可されるかどうかはリクエスト時に不明であるため、カスタム コントロールが有効になっているかどうかを確認する必要があります。
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd*)nativeAd {
GADVideoController *videoController = nativeAd.mediaContent.videoController;
BOOL canShowCustomControls = videoController.customControlsEnabled;
}
Swift
func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADNativeAd) {
let videoController = nativeAd.mediaContent.videoController
let canShowCustomControls = videoController?.customControlsEnabled() == true
}
カスタムの動画コントロールをレンダリングする
次のベスト プラクティスに沿って、カスタム動画コントロールをレンダリングします。
- カスタム コントロール ビューをネイティブ広告ビューの子としてレンダリングします。このアプローチにより、Open Measurement の視認性計算でカスタム コントロールが好ましくない障害物として考慮されるようになります。
- メディア ビュー全体に不可視のオーバーレイをレンダリングしないようにします。オーバーレイはメディアビューのクリックをブロックするため、ネイティブ広告のパフォーマンスに悪影響を及ぼします。代わりに、コントロールに収まるだけの小さなオーバーレイを作成します。
カスタム クリック操作
カスタム クリック操作は、広告ビューでスワイプを広告クリックとして登録できるネイティブ広告機能です。コンテンツのナビゲーションにスワイプ ジェスチャーを使用するアプリで動作するように設計されています。このガイドでは、ネイティブ広告でカスタム クリック ジェスチャーを有効にする方法について説明します。
選択したスワイプ方向で GADNativeAdCustomClickGestureOptions
インスタンスを初期化します。また、タップをクリックとして許可するかどうかも指定する必要があります。
カスタム クリック ジェスチャーはデフォルトで無効になっています。
無効にすると、タップのみがクリックとしてカウントされます。
有効にすると、スワイプ ジェスチャーがクリックとしてカウントされます。タップもクリックとしてカウントするかどうかを指定できます。
次の例は、右へのカスタム スワイプ ジェスチャーを実装し、通常のタップ動作を維持する方法を示しています。
GADNativeAdCustomClickGestureOptions *swipeGestureOptions = [[GADNativeAdCustomClickGestureOptions alloc]
initWithSwipeGestureDirection:UISwipeGestureRecognizerDirectionRight
tapsAllowed:YES];
// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
rootViewController:self
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ swipeGestureOptions ]];
スワイプ ジェスチャー イベントをリッスンする
スワイプ操作のクリックが記録されると、Google Mobile Ads SDK は既存の nativeAdDidRecordClick:
デリゲート メソッドに加えて、GADNativeAdDelegate
の nativeAdDidRecordSwipeGestureClick:
デリゲート メソッドを呼び出します。
#pragma mark - GADNativeAdDelegate implementation
// Called when a swipe gesture click is recorded.
- (void)nativeAdDidRecordSwipeGestureClick:(GADNativeAd *)nativeAd {
NSLog(@"A swipe gesture click has occurred.");
}
// Called when a swipe gesture click or a tap click is recorded, as configured in
// GADNativeAdCustomClickGestureOptions.
- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
NSLog(@"A swipe gesture click or tap click has occurred.");
}
メディエーション
カスタム クリック ジェスチャーは、Google Mobile Ads SDK がレンダリングするネイティブ広告でのみ機能します。レンダリングにサードパーティの SDK を必要とする広告ソースは、カスタム クリック ディレクトの設定に応答しません。