Combinazione di richieste di annuncio nativo e banner con rendering personalizzato

Con alcune modifiche al codice, puoi combinare annunci nativi e banner nelle richieste di annuncio.

Prerequisiti

Caricare un annuncio

Gli annunci nativi con rendering personalizzato vengono caricati tramite GADAdLoader oggetti. L'oggetto GADAdLoader può anche essere configurato per effettuare richieste di annunci che possono generare un annuncio banner o un annuncio nativo. L'aggiunta di GADAdLoaderAdTypeGAMBanner al parametro dell'array adTypes, insieme ai tipi di annunci nativi come GADAdLoaderAdTypeNative durante la creazione dell'oggetto GADAdLoader, specifica che gli annunci banner devono competere con gli annunci nativi per soddisfare la richiesta.

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

Quando richiedi annunci banner tramite GADAdLoader, il delegato del caricatore di annunci deve essere conforme al protocollo GAMBannerAdLoaderDelegate. Questo protocollo include un messaggio inviato quando è stato caricato un annuncio banner:

Swift

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

Objective-C

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

Il delegato del caricatore di annunci deve anche specificare le dimensioni degli annunci banner da richiedere rispondendo al messaggio validBannerSizesForAdLoader, come mostrato di seguito.

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)))
  ];
}

Imposta una dimensione dell'annuncio inferiore o uguale alle dimensioni dello schermo del dispositivo. Per determinare le dimensioni massime dello schermo su iOS 26 e versioni successive, utilizza la UIWindowScene.effectiveGeometry.coordinateSpace proprietà. Su iOS 18 e versioni precedenti, utilizza la UIWindowScene.coordinateSpace proprietà. Per maggiori dettagli sui vincoli di dimensione, consulta Risolvere i problemi relativi alle impressioni inevase in Ad Manager.

Conteggio manuale delle impressioni

Per attivare il conteggio manuale delle impressioni sugli annunci banner caricati tramite GADAdLoader, imposta un GAMBannerViewOptions con enableManualImpressions impostato su YES durante l'inizializzazione di GADAdLoader.

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 ]];

Se viene caricato un annuncio banner, puoi chiamare recordManualImpression quando determini che un annuncio è stato restituito correttamente e viene visualizzato sullo schermo per attivare manualmente un'impressione:

Swift

bannerView.recordImpression()

Objective-C

[self.bannerView recordImpression];