Anúncios premiados

Pré-requisitos

  • SDK de anúncios para dispositivos móveis do Google 19.7.0 ou superior.
  • Siga o guia de primeiros passos para importar o SDK de anúncios para dispositivos móveis do Google e atualizar seu manifesto do Android.

Sempre teste com anúncios de teste

Ao criar e testar seus aplicativos, use anúncios de teste em vez de anúncios de produção ao vivo. O não cumprimento pode levar à suspensão da sua conta.

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 premiados do Android:

ca-app-pub-3940256099942544/5224354917

Ele foi especialmente configurado para retornar anúncios de teste para cada solicitação, e você pode usá-lo em seus próprios aplicativos durante a codificação, teste e depuração. Apenas certifique-se de substituí-lo por seu próprio ID de bloco de anúncios antes de publicar seu aplicativo.

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

Carregar um objeto de anúncio premiado

Os anúncios premiados são carregados chamando o método static load() na classe RewardedAd e passando um RewardedAdLoadCallback . Isso geralmente é feito no método onCreate() de uma Activity . Observe que, como outros retornos de chamada de carregamento de formato, RewardedAdLoadCallback aproveita LoadAdError para fornecer detalhes de erro de maior fidelidade.

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd mRewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",
      adRequest, new RewardedAdLoadCallback() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
          // Handle the error.
          Log.d(TAG, loadAdError.getMessage());
          mRewardedAd = null;
        }

        @Override
        public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
          mRewardedAd = rewardedAd;
          Log.d(TAG, "Ad was loaded.");
        }
    });
  }
}

Kotlin

class MainActivity : AppCompatActivity() {

  private var mRewardedAd: RewardedAd? = null
  private final var TAG = 'MainActivity'

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var adRequest = AdRequest.Builder().build()

    RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, adError?.message)
        mRewardedAd = null
      }

      override fun onAdLoaded(rewardedAd: RewardedAd) {
        Log.d(TAG, "Ad was loaded.")
        mRewardedAd = rewardedAd
       }
    })
  }
}

Defina o FullScreenContentCallback

O FullScreenContentCallback lida com eventos relacionados à exibição de seu RewardedAd . Antes de exibir seu RewardedAd , defina o retorno de chamada assim:

Java

mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
  @Override
  public void onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad was shown.");
  }

  @Override
  public void onAdFailedToShowFullScreenContent(AdError adError) {
    // Called when ad fails to show.
    Log.d(TAG, "Ad failed to show.");
  }

  @Override
  public void onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad was dismissed.");
    mRewardedAd = null;
  }
});

Kotlin

mRewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
  override fun onAdShowedFullScreenContent() {
    // Called when ad is shown.
    Log.d(TAG, "Ad was shown.")
  }

  override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
    // Called when ad fails to show.
    Log.d(TAG, "Ad failed to show.")
  }

  override fun onAdDismissedFullScreenContent() {
    // Called when ad is dismissed.
    // Set the ad reference to null so you don't show the ad a second time.
    Log.d(TAG, "Ad was dismissed.")
    mRewardedAd = null
  }
}

Mostrar o anúncio

Ao exibir um anúncio premiado, você usará um objeto OnUserEarnedRewardListener para lidar com eventos de recompensa.

Java

if (mRewardedAd != null) {
  Activity activityContext = MainActivity.this;
  mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
    @Override
    public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
      // Handle the reward.
      Log.d(TAG, "The user earned the reward.");
      int rewardAmount = rewardItem.getAmount();
      String rewardType = rewardItem.getType();
    }
  });
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.");
}

Kotlin

if (mRewardedAd != null) {
  mRewardedAd?.show(this, OnUserEarnedRewardListener() {
    fun onUserEarnedReward(rewardItem: RewardItem) {
      var rewardAmount = rewardItem.amount
      var rewardType = rewardItem.type
      Log.d(TAG, "User earned the reward.")
    }
  })
} else {
  Log.d(TAG, "The rewarded ad wasn't ready yet.")
}

Perguntas frequentes

Existe um tempo limite para a chamada de inicialização?
Após 10 segundos, o SDK de anúncios para dispositivos móveis do Google invoca o OnInitializationCompleteListener mesmo que uma rede de mediação ainda não tenha concluído a inicialização.
E se algumas redes de mediação não estiverem prontas quando eu receber o retorno de chamada de inicialização?

É uma prática recomendada carregar um anúncio dentro do retorno de chamada do OnInitializationCompleteListener . Mesmo que uma rede de mediação não esteja pronta, o SDK de anúncios para dispositivos móveis do Google ainda solicitará um anúncio a essa rede. Portanto, se uma rede de mediação terminar de inicializar após o tempo limite, ela ainda poderá atender a futuras solicitações de anúncios nessa sessão.

Você pode continuar pesquisando o status de inicialização de todos os adaptadores em toda a sessão do aplicativo chamando MobileAds.getInitializationStatus() .

Como descubro por que uma determinada rede de mediação não está pronta?

AdapterStatus.getDescription() descreve por que um adaptador não está pronto para atender a solicitações de anúncios.

Exemplos no GitHub