Veja aqui melhores práticas de integração para implementações de desenvolvedor no Android. Estes cenários e dicas de programação ajudarão a sua equipe a entender melhor o SDK do Audience Network, tornar o processo de integração mais eficiente e manter a sua solução atualizada após o lançamento.
loadAd
novamente quando o anúncio tiver sido ignorado ou o carregamento do anúncio encontrar um erro, exceto em anúncios em banner.Mesmo que receba uma notificação de que o anúncio foi ignorado ou que houve um erro no retorno de chamada, você deverá ter um número máximo de tentativas para evitar que elas se repitam indefinidamente. O erro onError(Ad, AdError)
será chamado independentemente do motivo da falha no carregamento do anúncio. Por exemplo, no caso do erro "Sem internet", será necessário parar o carregamento do anúncio quando ele atingir o número máximo de tentativas.
No SDK do Audience Network, para qualquer tipo de anúncio exceto anúncios em banner, tenha cuidado ao chamar loadAd
. Nunca chame loadAd
quando um anúncio estiver em exibição. A melhor prática é implementar AdListener
para ser notificado sempre que um anúncio for ignorado, concluído, fechado ou encontrar erros. Isso permite que você chame loadAd
legalmente outra vez e não causará problemas.
loadAd
no retorno de chamada onInterstitialDismissed
.private InterstitialAd mInterstitialAd; private static final MAX_NUMBER_OF_RETRIES = 3; private boolean shouldLoadAd = true; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onCreate super.onCreate(savedInstanceState); ... mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); InterstitialAdListener interstitialAdListener = new InterstitialAdListener() { ... @Override public void onInterstitialDismissed(Ad ad) { // Interstitial dismissed callback if (shouldLoadAd) { /* Change shouldLoadAd value to false, or a new interstitial ad will show immediately when previous interstitial ad gets dismissed. */ shouldLoadAd = false; mInterstitialAd.loadAd(); } } @Override public void onError(Ad ad, AdError adError) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mInterstitialAd.loadAd(); } } ... }; mInterstitialAd.loadAd( mInterstitialAd.buildLoadAdConfig() .withAdListener(interstitialAdListener) .build()); ... }
onError
para NativeAd
.private static final MAX_NUMBER_OF_RETRIES = 3; private NativeAd mNativeAd; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); ... }
private Button showNativeAdButton; @Override public void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... showNativeAdButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Create a native ad request with a placement ID nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID"); // Create a listener to get notified when the ad was loaded. NativeAdListener nativeAdListener = new AdListener() { ... } // Initiate a request to load an ad. nativeAd.loadAd( nativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); } }); ... }
loadAd
em alguns retornos de chamada do Android, como onResume()
ou onStart()
, pois isso pode fazer com que loadAd
seja chamado repetidas vezes sem ignorar ou liberar o último anúncio na memória.@Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); ... } @Override protected void onResume() { super.onResume(); ... // DON'T DO THIS! mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); }
loadAd
indefinidamente no retorno de chamada onError. Veja abaixo um exemplo do que você nunca deve fazer. Caso haja um problema do tipo "Sem Internet", loadAd
será chamado repetidas vezes, o que acabará causando uma falha no aplicativo.private NativeAd mNativeAd; private boolean shouldRetry = true; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Remember to change shouldRetry to false, or DON'T implement like this! if (shouldRetry) { mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); ... }
Testar a integração de anúncios com seu aplicativo
Enviar seu aplicativo para análise.
Assim que recebermos uma solicitação de anúncio do seu aplicativo ou site, ela será analisada para garantir sua conformidade com as Políticas do Audience Network e os Padrões da Comunidade do Facebook. Saiba mais sobre nosso processo de análise.
Mais recursos |
Guia de introduçãoGuia técnico de introdução ao Audience Network | Referência da APIReferência do SDK do Facebook para iOS |