カスタム レンダリングによるネイティブ広告とバナー広告のリクエストの組み合わせ

コードを少し変更するだけで、広告リクエストでネイティブ広告とバナー広告を組み合わせることができます。

前提条件

広告の読み込み

カスタム レンダリングのネイティブ広告は、GADAdLoader オブジェクトを介して読み込まれます。GADAdLoader オブジェクトは、バナー広告またはネイティブ広告を返す広告リクエストを行うように設定することもできます。GADAdLoader オブジェクトの作成時に、adTypes 配列パラメータに GADAdLoaderAdTypeGAMBanner を追加し、GADAdLoaderAdTypeNative などのネイティブ広告タイプも追加すると、バナー広告とネイティブ広告が競合してリクエストを埋めるように指定できます。

Swift

adLoader = GADAdLoader(adUnitID: "/21775744923/example/native-and-banner",
    rootViewController: self,
    adTypes: [.native, .gamBanner],
    options: [... ad loader options objects ...])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/21775744923/example/native-and-banner"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

GAMBannerAdLoaderDelegate

GADAdLoader を介してバナー広告をリクエストする場合、広告ローダのデリゲートは GAMBannerAdLoaderDelegate プロトコルに準拠する必要があります。このプロトコルには、バナー広告の読み込み時に送信されるメッセージが含まれます。

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didReceive GAMBannerView: GAMBannerView)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveGAMBannerView:(GAMBannerView *)bannerView;

広告ローダ デリゲートは、以下のように validBannerSizesForAdLoader メッセージに応答して、リクエストするバナー広告のサイズも指定する必要があります。

Swift

public func validBannerSizes(for adLoader: GADAdLoader) -> [NSValue] {
  return [NSValueFromGADAdSize(GADAdSizeBanner),
    NSValueFromGADAdSize(GADAdSizeMediumRectangle),
    NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSize(width: 120, height: 20)))]
}

Objective-C

- (NSArray *)validBannerSizesForAdLoader:(GADAdLoader *)adLoader {
  return @[
    @(GADAdSizeBanner),
    @(GADAdSizeMediumRectangle),
    @(GADAdSizeFromCGSize(CGSizeMake(120, 20)))
  ];
}

デバイスの画面サイズ以下の広告サイズを設定します。iOS 26 以降で最大画面サイズを特定するには、UIWindowScene.effectiveGeometry.coordinateSpace プロパティを使用します。iOS 18 以前では、UIWindowScene.coordinateSpace プロパティを使用します。サイズ制約の詳細については、アド マネージャーで埋められなかったインプレッションのトラブルシューティングを行うをご覧ください。

インプレッション数の手動カウント

GADAdLoader を介して読み込まれたバナー広告で手動インプレッション カウントを有効にするには、GADAdLoader の初期化時に enableManualImpressions を YES に設定して GAMBannerViewOptions を設定します。

Swift

let bannerViewOptions = GAMBannerViewOptions()
bannerViewOptions.enableManualImpressions = true
adLoader = GADAdLoader(
  adUnitID: "/21775744923/example/native-and-banner", rootViewController: self,
  adTypes: [.native, .gamBanner], options: [bannerViewOptions])

Objective-C

GAMBannerViewOptions *bannerViewOptions = [[GAMBannerViewOptions alloc] init];
bannerViewOptions.enableManualImpressions = YES;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/21775744923/example/native-and-banner"
    rootViewController:self
               adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ]
               options:@[ bannerViewOptions ]];

バナー広告が読み込まれたら、広告が正常に返され、画面に表示されていることを確認したときに recordManualImpression を呼び出して、インプレッションを手動でカウントできます。

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];