Anúncios no app em Jogos Instantâneos

Você pode monetizar seu jogo exibindo anúncios aos jogadores. No momento, há dois formatos de anúncio do Audience Network integrados com os Jogos Instantâneos: os anúncios intersticiais e os vídeos com incentivo. Esta seção é um guia sobre o processo de integração da monetização de anúncios com seu jogo instantâneo.

Disponibilidade de formatos

PlataformaIntersticialIntersticial com incentivoVídeo com incentivo

Android

iOS

Web móvel

Web para desktop

Pré-requisitos

  • Você criou pelo menos um posicionamento de anúncio na propriedade associada ao jogo no Gerenciador de Monetização.
  • É possível testar suas criações em um dispositivo móvel ou em Facebook.com.

Observação: no momento, o Audience Network é limitado em algumas regiões. Verifique sua qualificação no fluxo de integração do Audience Network.

Consulte o guia Cinco etapas para começar a monetizar Jogos Instantâneos do Audience Network para saber mais.

Configurar o app do Facebook

Baixar exemplo

Se você já configurou seu app com o Gerenciador de Monetização e criou seus posicionamentos de anúncios, poderá ver o exemplo de código abaixo em ação ao baixar nossa demonstração:

Baixar demonstração de anúncios (.zip)

Como exibir um anúncio intersticial

Um intersticial é um anúncio em tela cheia que aparece em um ponto de transição natural no app. Esse tipo de anúncio está disponível nos formatos reprodução automática e clique para reproduzir. Os anúncios de reprodução automática serão reproduzidos assim que o intersticial for carregado. Eles podem ser pulados depois de 3 segundos por padrão. A duração máxima do anúncio é de dois minutos.

O trecho de código abaixo mostra um exemplo de como exibir um anúncio intersticial.

Para que o código funcione, você precisa criar um posicionamento de anúncio com o formato de exibição definido como Intersticial. Use posicionamentos diferentes para cada unidade de anúncio no seu app.

Pré-carregar o anúncio

var preloadedInterstitial = null;

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(interstitial) {
  // Load the Ad asynchronously
  preloadedInterstitial = interstitial;
  return preloadedInterstitial.loadAsync();
}).then(function() {
  console.log('Interstitial preloaded');
}).catch(function(err){
  console.error('Interstitial failed to preload: ' + err.message);
});

Exibir o anúncio

preloadedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Interstitial ad finished successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Como exibir um anúncio intersticial com incentivo

Um intersticial com incentivo é um anúncio em tela cheia que oferece incentivos ao usuário em troca da visualização da publicidade. A exibição desses anúncios não precisa ser aceita pelos usuários.

O trecho de código abaixo mostra um exemplo de como exibir um anúncio intersticial com incentivo.

Para que o código funcione, você precisa criar um posicionamento de anúncio com o formato de exibição definido como Intersticial com incentivo. Os anúncios intersticiais com incentivo estão disponíveis para apps da web do celular, da web para desktop e do Facebook Gaming. Use posicionamentos diferentes para cada unidade de anúncio no seu app.

Pré-carregar o anúncio

var preloadedRewardedInterstitial = null;

FBInstant.getRewardedInterstitialAsync(
  '123123123123_123123123123' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedInterstitial = rewarded;
  return preloadedRewardedInterstitial.loadAsync();
}).then(function() {
  console.log('Rewarded interstitial preloaded');
}).catch(function(err){
  console.error('Rewarded interstitial failed to preload: ' + err.message);
});

Exibir o anúncio

preloadedRewardedInterstitial.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded interstitial watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

Como exibir um anúncio de vídeo com incentivo

Os anúncios de vídeo com incentivo são uma experiência em tela cheia na qual os usuários aceitam visualizar um anúncio de vídeo em troca de algo de valor, como moeda virtual, itens no app ou conteúdo exclusivo.

O trecho de código abaixo mostra um exemplo de como exibir um anúncio de vídeo com incentivo.

Para que o código funcione, você precisa criar um posicionamento de anúncio com o formato de exibição definido como Vídeo com incentivo. Use posicionamentos diferentes para cada unidade de anúncio no seu app.

Pré-carregar o anúncio

var preloadedRewardedVideo = null;

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456' // Your Ad Placement Id
).then(function(rewarded) {
  // Load the Ad asynchronously
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded');
}).catch(function(err){
  console.error('Rewarded video failed to preload: ' + err.message);
});

Exibir o anúncio

preloadedRewardedVideo.showAsync()
.then(function() {
  // Perform post-ad success operation
  console.log('Rewarded video watched successfully');        
})
.catch(function(e) {
  console.error(e.message);
});

O ciclo de vida das instâncias de anúncio

Pré-carregar três instâncias de anúncio do mesmo tipo sem exibi-las causará uma falha quando você tentar criar um novo anúncio. Após a conclusão do carregamento, o anúncio ficará válido por 60 minutos.

O código de amostra abaixo ajuda a entender como isso funciona, considerando que todas as configurações estejam corretas (por exemplo, identificação válida do posicionamento do anúncio) e que não haja nenhum problema de rede:

var preloadedInterstitial1 = null;
var preloadedInterstitial2 = null;
var preloadedInterstitial3 = null;
var preloadedRewardedVideo = null;

// PRELOAD PHASE
FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 1 ad instance.
  preloadedInterstitial1 = interstitial;
  return preloadedInterstitial1.loadAsync();
}).then(function() {
  // This should get called unless we do not have ads to serve.
  console.log('Interstitial 1 preloaded')
}).catch(function(err){
  // This would be called only if we do not have ads to serve.
  // The error would then be ADS_NO_FILL.
  // You can try to reload the ad after some time (ideally over 30 seconds).
  // If you get ADS_NO_FILL 3 times in a row, the instance will be disabled.
  console.error('Interstitial 1 failed to preload: ' + err.message);
  // You can try to reload after 30 seconds (2nd attempt)
  setTimeout(function () { handleAdsNoFill(preloadedInterstitial1, 2); }, 30 * 1000);
});

// Here is how the function to handle ADS_NO_FILL would look like
function handleAdsNoFill (adInstance, attemptNumber) {
  if (attemptNumber > 3) {
    // You can assume we will not have to serve in the current session, no need to try
    // to load another ad.
    return;
  } else {
    adInstance.loadAsync().then(function() {
      // This should get called if we finally have ads to serve.
      console.log('Interstitial preloaded')
    }).catch(function(err){
      console.error('Interstitial failed to preload: ' + err.message);
      // You can try to reload after 30 seconds
      setTimeout(function () {
        handleAdsNoFill(adInstance, attemptNumber+1);
      }, 30 * 1000);
    });
  }
}

// As we covered ADS_NO_FILL, from now on let's assume we have ads to serve.
FBInstant.getInterstitialAdAsync(
  // You can re-use the same Ad Placement Id as long as it is of the valid type:
  // interstitial or rewarded video (here, it has to be interstitial)
  '123123123123_123123123123'
).then(function(interstitial) {
  // This should get called, meaning you now have 2 ad instances.
  preloadedInterstitial2 = interstitial;
  return preloadedInterstitial2.loadAsync();
}).then(function() {
  console.log('Interstitial 2 preloaded')
});

FBInstant.getRewardedVideoAsync(
  '456456456456_456456456456'
).then(function(rewarded) {
  // This should get called, meaning you now have 3 ad instances.
  preloadedRewardedVideo = rewarded;
  return preloadedRewardedVideo.loadAsync();
}).then(function() {
  console.log('Rewarded video preloaded')
});

FBInstant.getInterstitialAdAsync(
  '123123123123_123123123123'
).catch(function(err){
  // This should be called now because you already have 3 ad instances.
  // The error would then be ADS_TOO_MANY_INSTANCES.
  console.error('Interstitial 3 failed to preload: ' + err.message);
});

// SHOWING ADS (at a timing that makes sense in the workflow of your game)
preloadedInterstitial1.showAsync()
.then(function() {
  // This should get called, meaning you now have 2 ad instances.
  console.log('Interstitial ad 1 finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedInterstitial2.showAsync()
.then(function() {
  // This should get called, meaning you now have 1 ad instance.
  console.log('Interstitial ad finished successfully');        
});

// A bit later, assuming you did not preload a new instance yet.
preloadedRewardedVideo.showAsync()
.then(function() {
  // This should get called, meaning you now have no ad instance.
  console.log('Rewarded video watched successfully');        
});

Boas práticas e solução de problemas

As informações abaixo são específicas para Jogos Instantâneos. Consulte também os insights do Audience Network.

Exiba anúncios em momentos adequados: garanta que os anúncios no seu jogo não interrompam a experiência do jogador.

Pré-carregue os anúncios: não deixe até a última hora para solicitar, pré-carregar e exibir o anúncio ao mesmo tempo. Em vez disso, garanta que algumas AdInstances estejam pré-carregadas para que, quando o jogador solicitar a visualização do anúncio, ele não tenha que aguardar muito.

Verifique a compatibilidade: em alguns casos, a sessão do jogador não é compatível com anúncios (por exemplo, em navegadores desktop). Antes de tentar solicitar um anúncio, sempre confira a compatibilidade usando FBInstant.getSupportedAPIs().

Trate anúncios não preenchidos com naturalidade: algumas condições poderão fazer com que o anúncio não seja preenchido. Nesse caso, a promessa será rejeitada com uma mensagem de erro ADS_NO_FILL. Confirme que seu jogo é capaz de controlar facilmente essa situação, exiba uma mensagem amigável e aguarde 30 segundos antes de solicitar outro anúncio do mesmo tipo.

Teste os anúncios antes de fazer o envio. Como desenvolvedor, você pode solicitar anúncios em um dispositivo móvel e verificar se a integração está funcionando antes mesmo de enviar o app para a análise do Audience Network.

Rastreie impressões do anúncio. Use os eventos personalizados para rastrear impressões quando showAsync for resolvido.

Não use um número excessivo de AdInstances. Os dois métodos getRewardedVideoAsync e getInterstitialAdAsync retornam uma AdInstance, que pode ser pré-carregada. Pré-carregar três ou mais AdInstances do mesmo tipo sem exibi-las fará com que tentativas subsequentes de criar uma nova AdInstance resultem em falha. Isso significa que chamar getRewardedVideoAsync e getInterstitialAdAsync resultará em falha com o código de erro ADS_TOO_MANY_INSTANCES até que showAsync seja chamado ou que o jogador reinicie o Messenger.