Compartilhe seu feedback e ajude a melhorar o roteiro do SDK dos anúncios para dispositivos móveis do Google. Participe da pesquisa anual do SDK dos anúncios para dispositivos móveis do Google de 2023 até 5 de maio de 2023.

Anúncios abertos do aplicativo

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Este guia é destinado a editores que integram anúncios de abertura do app.

Os anúncios de abertura do app são um formato especial destinado a editores que querem gerar receita com as telas de carregamento do app. Os anúncios de abertura do app podem ser fechados pelos usuários a qualquer momento. Os anúncios de abertura do app podem ser exibidos quando os usuários colocam seu app em primeiro plano.

Os anúncios de abertura do app mostram automaticamente uma pequena área de branding para que os usuários saibam que estão no seu app. Veja um exemplo de anúncio:

Veja as etapas necessárias para implementar anúncios de abertura do app:

  1. Adicione métodos ao AppDelegate para carregar e mostrar um GADAppOpenAd.
  2. Detecte eventos em primeiro plano no app.
  3. Gerencie os callbacks de apresentação.

Pré-requisitos

Sempre faça testes com anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Sua conta poderá ser suspensa se isso não for feito.

A maneira mais fácil de carregar anúncios de teste é usar nosso ID de bloco de anúncios de teste dedicado para anúncios de abertura do app:

ca-app-pub-3940256099942544/5662855259

Ele foi especialmente configurado para retornar anúncios de teste para cada solicitação, e você pode usar os anúncios em seus próprios aplicativos durante a programação, teste e depuração. Basta substituí-lo pelo ID do seu bloco de anúncios antes de publicar o app.

Para mais informações sobre como os anúncios de teste do SDK de anúncios para dispositivos móveis funcionam, consulte a página Anúncios de teste.

Modificar o delegado do seu app

Os anúncios de abertura do app são exibidos quando o aplicativo é iniciado ou quando os usuários colocam seu aplicativo em primeiro plano. Para garantir que você tenha um anúncio pronto para exibição quando um usuário abrir seu aplicativo, convém ter uma referência a um anúncio pronto para uso.

Isso significa que é preciso pré-carregar um GADAppOpenAd antes de exibir o anúncio. Dessa forma, o anúncio já pode ser exibido na próxima vez que abrir o app. Para ter uma única referência ao anúncio, adicione a seguinte propriedade e métodos ao AppDelegate.h:

#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;

- (void)requestAppOpenAd;
- (void)tryToPresentAd;

@end

É necessário tornar a solicitação e os métodos de apresentação acessíveis fora da classe AppDelegate para que você possa os chamar no UISceneDelegate para dispositivos com o iOS 13 e versões mais recentes. Isso será abordado em mais detalhes posteriormente.

No AppDelegate.m, adicione o método requestAppOpenAd:

- (void)requestAppOpenAd {
  self.appOpenAd = nil;
  [GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
                         request:[GADRequest request]
                     orientation:UIInterfaceOrientationPortrait
               completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
                 if (error) {
                   NSLog(@"Failed to load app open ad: %@", error);
                   return;
                 }
                 self.appOpenAd = appOpenAd;
               }];
}

Esse método faz uma solicitação para carregar um novo GADAppOpenAd. Se for bem-sucedida, ela definirá a propriedade na AppDelegate para que o anúncio esteja pronto para uso quando os usuários colocarem o app em primeiro plano.

É necessário definir a orientação. Se a orientação estiver definida como UIInterfaceOrientationUnknown, o GADAppOpenAd vai usar a orientação retrato. Se você quiser criar um layout de paisagem, especifique que você precisa de uma orientação de paisagem transmitindo UIInterfaceOrientationLandscapeLeft ou UIInterfaceOrientationLandscapeRight para o método de solicitação.

Em seguida, adicione um método para exibir o anúncio das AppDelegate.

- (void)tryToPresentAd {
  if (self.appOpenAd) {
    UIViewController *rootController = self.window.rootViewController;
    [self.appOpenAd presentFromRootViewController:rootController];
  } else {
    // If you don't have an ad ready, request one.
    [self requestAppOpenAd];
  }
}

Esse método verifica a presença de um anúncio. Se existir e puder ser mostrado no controlador de visualização raiz, ele exibirá o anúncio no conteúdo existente. Se nenhum anúncio estiver disponível, o método fará uma nova solicitação.

Detectar eventos em primeiro plano no app

Quando um usuário entra no seu app pela primeira vez, é improvável que você tenha uma referência de anúncio pronta para uso. Em vez disso, use o método tryToPresentAd definido acima, que exibirá um anúncio se houver um disponível ou solicite um novo. Esse método precisa ser chamado sempre que o app estiver em primeiro plano. Isso pode ser feito substituindo o método applicationDidBecomeActive: no AppDelegate:

- (void)applicationDidBecomeActive:(UIApplication *)application {
  [self tryToPresentAd];
}

Processar callbacks de apresentações

Quando o app exibe um anúncio de abertura do app, é necessário usar o GADFullScreenContentDelegate para processar determinados eventos de apresentação. Especificamente, convém solicitar o próximo anúncio de abertura do app quando o primeiro terminar de apresentar.

Faça as seguintes mudanças no arquivo AppDelegate.h:

#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate
    : UIResponder <UIApplicationDelegate, GADFullScreenContentDelegate>

@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;

- (void)requestAppOpenAd;
- (void)tryToPresentAd;

@end

Em seguida, no seu arquivo AppDelegate.m, adicione as seguintes linhas:

- (void)requestAppOpenAd {
  self.appOpenAd = nil;
  [GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
                         request:[GADRequest request]
                     orientation:UIInterfaceOrientationPortrait
               completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
                 if (error) {
                   NSLog(@"Failed to load app open ad: %@", error);
                   return;
                 }
                 self.appOpenAd = appOpenAd;
                 self.appOpenAd.fullScreenContentDelegate = self;
               }];
}

#pragma mark - GADFullScreenContentDelegate

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
  NSLog(@"didFailToPresentFullScreenContentWithError");
  [self requestAppOpenAd];

}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"adWillPresentFullScreenContent");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"adDidDismissFullScreenContent");
  [self requestAppOpenAd];
}
...

Esses callbacks processam vários eventos no ciclo de vida do anúncio de abertura do app.

Considerar a expiração do anúncio

Para garantir que um anúncio expirado não seja exibido, adicione um método ao delegado do app que verifique o tempo decorrido desde o carregamento da referência do anúncio.

No seu AppDelegate.h, adicione uma propriedade NSDate:

#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;
@property(weak, nonatomic) NSDate *loadTime;

- (void)requestAppOpenAd;
- (void)tryToPresentAd;

@end

Em seguida, adicione um método que retorne true caso menos de algumas horas tenham se passado desde o carregamento do anúncio.

Em AppDelegate.m, adicione este método:

- (BOOL)wasLoadTimeLessThanNHoursAgo:(int)n {
  NSDate *now = [NSDate date];
  NSTimeInterval timeIntervalBetweenNowAndLoadTime = [now timeIntervalSinceDate:self.loadTime];
  double secondsPerHour = 3600.0;
  double intervalInHours = timeIntervalBetweenNowAndLoadTime / secondsPerHour;
  return intervalInHours < n;
}

A próxima etapa é definir a propriedade loadTime quando o anúncio é carregado:

- (void)requestAppOpenAd {
  self.appOpenAd = nil;
  [GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
                         request:[GADRequest request]
                     orientation:UIInterfaceOrientationPortrait
               completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
                 if (error) {
                   NSLog(@"Failed to load app open ad: %@", error);
                   return;
                 }
                 self.appOpenAd = appOpenAd;
                 self.appOpenAd.fullScreenContentDelegate = self;
                 self.loadTime = [NSDate date];
               }];
}

Por fim, verifique a validade da sua referência de anúncios antes de tentar exibi-lo:

- (void)tryToPresentAd {
  if (self.appOpenAd && [self wasLoadTimeLessThanNHoursAgo:4]) {
    UIViewController *rootController = self.window.rootViewController;
    [self.appOpenAd presentFromRootViewController:rootController];
  } else {
    // If you don't have an ad ready, request one.
    [self requestAppOpenAd];
  }
}

Inicializações a frio e carregamento de telas

A documentação acima pressupõe que você só exiba anúncios de abertura do app quando os usuários destacarem seu app quando ele estiver suspenso na memória. As "inicializações a frio" ocorrem quando o app é iniciado, mas não estava suspenso na memória.

Um exemplo de inicialização a frio é quando um usuário abre o app pela primeira vez. Com inicializações a frio, não haverá um anúncio de abertura do app carregado anteriormente que esteja pronto para ser exibido imediatamente. O atraso entre a solicitação de anúncio e o recebimento de um anúncio pode criar uma situação em que os usuários podem usar seu app rapidamente antes de se surpreender com um anúncio fora de contexto. Evite isso, porque a experiência do usuário é ruim.

A maneira preferencial de usar anúncios de abertura do app em inicializações a frio é usar uma tela de carregamento para carregar o jogo ou os recursos do app e exibir o anúncio somente nessa tela. Se o app tiver concluído o carregamento e enviado o usuário ao conteúdo principal do app, não mostre o anúncio.

Práticas recomendadas

O Google criou anúncios de abertura do app para ajudar você a gerar receita com a tela de carregamento do seu app. No entanto, é importante ter em mente as práticas recomendadas para que os usuários possam usar seu app. Não se esqueça de:

  • Aguarde até que o primeiro anúncio do app seja aberto algumas vezes depois que os usuários o usarem.
  • Exiba anúncios de abertura do app nos momentos em que os usuários aguardariam o carregamento do aplicativo.
  • Se você tiver uma tela de carregamento no anúncio de abertura do app e ela for concluída antes do anúncio ser dispensado, você pode dispensar a tela no método adDidDismissFullScreenContent.

Exemplos no GitHub