Anúncios em banner

No Guia de primeiros passos, há informações sobre como implementar o SDK e exibir um anúncio de banner de teste. Este guia aborda personalizações adicionais que podem ser usadas com os anúncios de banner.

Para ver implementações dessas personalizações para anúncios de banner, faça o download do aplicativo API Demo para iOS.

Fazer o download do API Demo

Os anúncios para dispositivos móveis do Google são compatíveis com os tamanhos de banner a seguir:

Tamanho (L x A) Descrição Disponibilidade Constante AdSize
320 x 50 Banner padrão Celulares e tablets kGADAdSizeBanner
320 x 100 Banner grande Celulares e tablets kGADAdSizeLargeBanner
300 x 250 Retângulo médio IAB Celulares e tablets kGADAdSizeMediumRectangle
468 x 60 Banner em tamanho real IAB Tablets kGADAdSizeFullBanner
728 x 90 Cabeçalho IAB Tablets kGADAdSizeLeaderboard
Largura da tela x 32|50|90 Banner inteligente Celulares e tablets kGADAdSizeSmartBannerPortrait
kGADAdSizeSmartBannerLandscape

Banners inteligentes

Os banners inteligentes são blocos de anúncios que renderizam anúncios de banner na largura de qualquer tamanho de tela, dispositivo e orientação. Os banners inteligentes ajudam a lidar com o aumento da fragmentação de tela em diferentes dispositivos. Isso é feito por meio da detecção "inteligente" da largura do celular na orientação atual e do redimensionamento da exibição do anúncio para esse tamanho.

Três alturas de anúncio [em pixel independente de densidade (dp)] são implementadas nos banners inteligentes:

  • 32: altura da tela do dispositivo <= 400
  • 50: 400 < altura da tela do dispositivo <= 720
  • 90: altura da tela do dispositivo > 720

Em alguns dispositivos, tais como celulares, a altura varia de acordo com a orientação. Geralmente, os anúncios de banner inteligente nos celulares apresentam largura total x 50 dp na orientação "retrato" e largura total x 32 dp na orientação "paisagem". Nos tablets, eles apresentam largura total x 90 dp em ambas as orientações.

Quando um anúncio de imagem não é grande o suficiente para preencher todo o espaço designado, a imagem fica centralizada e os espaços em ambas as laterais são preenchidos.

Para usar banners inteligentes, é necessária a constante kGADAdSizeSmartBannerPortrait ou kGADAdSizeSmartBannerLandscape, assim:

Objective-C

// Use kGADAdSizeSmartBannerLandscape if your app is running in landscape.
DFPBannerView *bannerView = [[DFPBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait];

Swift

// Use kGADAdSizeSmartBannerLandscape if your app is running in landscape.
let bannerView = DFPBannerView(adSize: kGADAdSizeSmartBannerPortrait)

Tamanho de anúncio personalizado

Além dos blocos de anúncios padrão da AdMob, o DFP permite a veiculação de blocos de anúncios de qualquer tamanho em um aplicativo. O tamanho do anúncio (largura e altura) definido em uma solicitação de anúncio deve corresponder às dimensões da exibição de anúncio (DFPBannerView) mostradas no aplicativo.

Objective-C

// Define custom GADAdSize of 250x250 for DFPBannerView
GADAdSize customAdSize = GADAdSizeFromCGSize(CGSizeMake(250, 250));
self.bannerView = [[DFPBannerView alloc] initWithAdSize:customAdSize];

Swift

// Define custom GADAdSize of 250x250 for DFPBannerView.
let customAdSize = GADAdSizeFromCGSize(CGSize(width: 250, height: 250))
bannerView = DFPBannerView(adSize: customAdSize)

Veja o exemplo de vários tamanhos de anúncio do DFP de uma implementação de tamanho de anúncio personalizado no aplicativo API Demo para iOS.

Objective-C Swift

Vários tamanhos de anúncio

Com o DFP, é possível especificar vários tamanhos de anúncio que podem ser qualificados para veiculação em uma DFPBannerView. Para usar esse recurso, é necessário seguir três etapas:

  1. Na IU do DFP, crie um item de linha segmentando o mesmo bloco de anúncios que está associado a criativos de tamanhos diferentes.

  2. No seu aplicativo, defina a propriedade validAdSizes na DFPBannerView:

    Objective-C

    // Define an optional array of GADAdSize to specify all valid sizes that are appropriate
    // for this slot. Never create your own GADAdSize directly. Use one of the
    // predefined standard ad sizes (such as kGADAdSizeBanner), or create one using
    // the GADAdSizeFromCGSize method.
    //
    // Note: Ensure that the allocated DFPBannerView is defined with an ad size. Also note
    // that all desired sizes should be included in the validAdSizes array.
    self.bannerView.validAdSizes = @[
        NSValueFromGADAdSize(kGADAdSizeBanner),
        NSValueFromGADAdSize(kGADAdSizeMediumRectangle),
        NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSizeMake(120, 20)))
    ];
    

    Swift

    // Define an optional array of GADAdSize to specify all valid sizes that are appropriate
    // for this slot. Never create your own GADAdSize directly. Use one of the
    // predefined standard ad sizes (such as kGADAdSizeBanner), or create one using
    // the GADAdSizeFromCGSize method.
    //
    // Note: Ensure that the allocated DFPBannerView is defined with an ad size. Also note
    // that all desired sizes should be included in the validAdSizes array.
    bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeBanner),
        NSValueFromGADAdSize(kGADAdSizeMediumRectangle),
        NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSize(width: 120, height: 20)))]
    

  3. Implemente o método GADAdSizeDelegate para detectar uma alteração no tamanho do anúncio.

    Objective-C

    - (void)adView:(DFPBannerView *)view willChangeAdSizeTo:(GADAdSize)size;
    

    Swift

    public func adView(bannerView: DFPBannerView!, willChangeAdSizeTo size: GADAdSize)
    

    Lembre-se de definir o delegado antes de fazer a solicitação de um anúncio.

    Objective-C

    self.bannerView.adSizeDelegate = self;

    Swift

    bannerView.adSizeDelegate = self

Veja o exemplo de vários tamanhos de anúncio do DFP de uma implementação de tamanho de anúncio personalizado no aplicativo API Demo para iOS.

Objective-C Swift

Contagem manual de impressões

É possível enviar pings de impressões manualmente para o DFP se há condições especiais em relação a quando uma impressão deve ser registrada. Para fazer isso, basta ativar uma DFPBannerView para impressões manuais antes de carregar um anúncio:

Objective-C

self.bannerView.enableManualImpressions = YES;

Swift

bannerView.enableManualImpressions = true

Você poderá disparar uma impressão manualmente ao identificar que um anúncio foi retornado com sucesso e está sendo exibido na tela:

Objective-C

[self.bannerView recordImpression];

Swift

bannerView.recordImpression()

Eventos de aplicativo

Com os eventos de aplicativo, é possível criar anúncios capazes de enviar mensagens aos seus respectivos códigos de aplicativo. Em seguida, o aplicativo poderá realizar ações com base nessas mensagens específicas.

Você pode monitorar eventos específicos do DFP usando o GADAppEventDelegate. Esses eventos podem ocorrer a qualquer momento durante o ciclo de vida do anuncio, mesmo antes que GADBannerViewDelegate do adViewDidReceiveAd: seja chamado.

Objective-C

// Implement your app event within these methods. The delegate will be
// notified when the SDK receives an app event message from the ad.

@optional
// Called when the banner receives an app event.
- (void)adView:(DFPBannerView *)banner
    didReceiveAppEvent:(NSString *)name
              withInfo:(NSString *)info;
// Called when the interstitial receives an app event.
- (void)interstitial:(DFPInterstitial *)interstitial
    didReceiveAppEvent:(NSString *)name
              withInfo:(NSString *)info;

Swift

// Implement your app event within these methods. The delegate will be
// notified when the SDK receives an app event message from the ad.

// Called when the banner receives an app event.
optional public func adView(banner: GADBannerView!,
    didReceiveAppEvent name: String!, withInfo info: String!)

// Called when the interstitial receives an app event.
optional public func interstitial(interstitial: GADInterstitial!,
    didReceiveAppEvent name: String!, withInfo info: String!)

Seus métodos de evento do aplicativo podem ser implementados em um controlador de visualização:

Objective-C

@import GoogleMobileAds;

@interface ViewController : UIViewController  {
}

@end

Swift

import GoogleMobileAds

class ViewController: UIViewController, GADAppEventDelegate {
}

Lembre-se de definir o delegado usando a propriedade appEventDelegate antes de fazer a solicitação de um anúncio:

Objective-C

self.bannerView.appEventDelegate = self;

Swift

bannerView.appEventDelegate = self

Veja um exemplo de como alterar a cor do plano de fundo do seu aplicativo dependendo de um evento do aplicativo com o nome de uma cor:

Objective-C

- (void)adView:(DFPBannerView *)banner
    didReceiveAppEvent:(NSString *)name
              withInfo:(NSString *)info {
  if ([name isEqual:@"color"]) {
    if ([info isEqual:@"green"]) {
      // Set background color to green.
      self.view.backgroundColor = [UIColor greenColor];
    } else if ([info isEqual:@"blue"]) {
      // Set background color to blue.
      self.view.backgroundColor = [UIColor blueColor];
    } else
      // Set background color to black.
      self.view.backgroundColor = [UIColor blackColor];
    }
  }
}

Swift

func adView(banner: GADBannerView!, didReceiveAppEvent name: String!,
    withInfo info: String!) {
  if name == "color" {
    switch info {
    case "green":
      // Set background color to green.
      view.backgroundColor = UIColor.greenColor()
    case "blue":
      // Set background color to blue.
      view.backgroundColor = UIColor.blueColor()
    default:
      // Set background color to black.
      view.backgroundColor = UIColor.blackColor()
    }
  }
}

Veja a seguir o criativo correspondente que envia mensagens coloridas de evento de aplicativo para o appEventDelegate:

<html>
<head>
  <script src="//media.admob.com/api/v1/google_mobile_app_ads.js"></script>
  <script>
    // Send a color=green event when ad loads.
    admob.events.dispatchAppEvent("color", "green");

    handleClick = function() {
      // Send a color=blue event when ad is clicked.
      admob.events.dispatchAppEvent("color", "blue");
    };
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad" onClick="handleClick()">Carpe diem!</div>
</body>
</html>

Veja o exemplo de eventos de aplicativo do DFP de uma implementação de eventos de aplicativo no API Demo para iOS.

Objective-C Swift

Retornos de evento do ciclo de vida do anúncio

Se desejar, você pode acompanhar eventos do ciclo de vida do anúncio, tais como falhas de solicitação ou "cliques", implementando GADBannerViewDelegate por completo ou parte dele.

Objective-C

@protocol GADBannerViewDelegate 
@optional
- (void)adViewDidReceiveAd:(DFPBannerView *)bannerView;
- (void)adView:(DFPBannerView *)bannerView
    didFailToReceiveAdWithError:(GADRequestError *)error;
- (void)adViewWillPresentScreen:(DFPBannerView *)bannerView;
- (void)adViewDidDismissScreen:(DFPBannerView *)bannerView;
- (void)adViewWillDismissScreen:(DFPBannerView *)bannerView;
- (void)adViewWillLeaveApplication:(DFPBannerView *)bannerView;
@end

Swift

public protocol GADBannerViewDelegate: NSObjectProtocol {
  optional public func adViewDidReceiveAd(bannerView: GADBannerView!)
  optional public func adView(bannerView: GADBannerView!,
      didFailToReceiveAdWithError error: GADRequestError!)
  optional public func adViewWillPresentScreen(bannerView: GADBannerView!)
  optional public func adViewWillDismissScreen(bannerView: GADBannerView!)
  optional public func adViewDidDismissScreen(bannerView: GADBannerView!)
  optional public func adViewWillLeaveApplication(bannerView: GADBannerView!)
}

Esses métodos podem ser implementados em um objeto separado, como um controlador de visualização:

Objective-C

@import GoogleMobileAds;

@interface ViewController : UIViewController  {
}

@end

Swift

import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {
}

ou como parte da subclasse DFPBannerView:

Objective-C

@import GoogleMobileAds;

@interface MyBannerView : DFPBannerView  {
}

@end

Swift

import GoogleMobileAds

class MyBannerView: DFPBannerView, GADBannerViewDelegate {
}

Lembre-se de definir o delegado antes de fazer a solicitação de um anúncio:

Objective-C

self.bannerView.delegate = self;

Swift

bannerView.delegate = self

adViewDidReceiveAd:

Enviado quando loadRequest: é executado com êxito. É uma boa oportunidade para adicionar o remetente à hierarquia de visualização se ele ficou oculto até agora, por exemplo:

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)bannerView {
  bannerView.hidden = NO;
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  bannerView.hidden = false
}

adView:didFailToReceiveAdWithError:

Enviado quando loadRequest: falha, normalmente devido a uma falha de rede, um erro de configuração de aplicativo ou falta de inventário de anúncios. É possível registrar esses eventos para depuração:

Objective-C

- (void)adView:(DFPBannerView *)adView
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"adView:didFailToReceiveAdWithError: %@", error.localizedDescription);
}

Swift

func adView(bannerView: DFPBannerView!,
    didFailToReceiveAdWithError error: GADRequestError!) {
  print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

adViewWillPresentScreen:

Enviado imediatamente antes de o usuário ver uma interface de anúncio de tela inteira em resposta ao toque no remetente. Nesse momento, você deve pausar todas as animações, cronômetros e outras atividades que presumem a interação do usuário e salvar o estado do aplicativo, como em UIApplicationDidEnterBackgroundNotification. Normalmente, o usuário simplesmente procura o anúncio de tela inteira e o dispensa, gerando adViewDidDismissScreen: e retornando o controle para o seu aplicativo. No entanto, se a ação do banner tiver sido "Clique para App Store" ou "Clique para iTunes", ou o usuário pressionar "Início" no anúncio, seu aplicativo será interrompido e possivelmente encerrado.

Nesses casos, no iOS 4.0 ou superior, o próximo método invocado será o applicationWillResignActive: do controlador de visualização raiz seguido por adViewWillLeaveApplication:.

adViewDidDismissScreen:

Enviado quando o usuário sai da IU de tela inteira do remetente.

adViewWillDismissScreen:

Enviado imediatamente antes de a IU de tela inteira do remetente ser dispensada, restaurando seu aplicativo e o controlador de visualização raiz. Nesse momento, você deve reiniciar todas as atividades principais pausadas como parte de adViewWillPresentScreen:.

adViewWillLeaveApplication:

Enviado pouco antes de o seu aplicativo ficar em segundo plano ou ser encerrado porque o usuário tocou em um banner "Clique para App Store" ou "Clique para iTunes". As notificações UIApplicationDelegate normais, como applicationDidEnterBackground: chegarão imediatamente antes disso.

Não solicite um anúncio em applicationWillEnterForeground:, pois a solicitação será ignorada. Insira a solicitação em applicationDidBecomeActive: como alternativa.

Os delegados Objective-C não são preservados e devem ser transmitidos de modo assíncrono antes de o objeto delegado ser finalmente desalocado.

Veja o exemplo de delegado de anúncio de uma implementação de retornos de evento do ciclo de vida do anúncio no aplicativo API Demo para iOS.

Objective-C Swift

O que vem a seguir

Enviar comentários sobre…

SDK for DFP Users on iOS
Precisa de ajuda? Acesse nossa página de suporte.