Anúncios premiados

Os anúncios premiados são aqueles com que os usuários podem interagir em troca. para recompensas no app. Este guia mostra como integrar anúncios premiados de da AdMob em um app Unity.

Leia algumas histórias de sucesso dos clientes: estudo de caso 1, estudo de caso 2.

Este guia explica como integrar anúncios premiados a um app Unity.

Pré-requisitos

Sempre faça testes com anúncios de teste

O exemplo de código a seguir contém o ID de um bloco de anúncios, que você pode usar para solicitar anúncios de teste. Ele foi configurado especialmente para retornar anúncios de teste em vez anúncios de produção para todas as solicitações, o que torna o uso seguro deles.

No entanto, depois de registrar um aplicativo no interface da Web da AdMob e criou seu próprio bloco de anúncios para uso no app, configure o dispositivo como um teste de forma explícita. dispositivo durante no desenvolvimento de software.

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Inicializar o SDK de anúncios para dispositivos móveis

Antes de carregar os anúncios, faça com que seu app inicialize o SDK dos anúncios para dispositivos móveis chamando MobileAds.Initialize(): Isso precisa ser feito apenas uma vez, de preferência na inicialização do app.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

Se você estiver usando a mediação, aguarde até que a chamada de retorno ocorra antes de carregar os anúncios como isso garante que todos os adaptadores de mediação sejam inicializados.

Implementação

As principais etapas para integrar os anúncios premiados são:

  1. Carregar o anúncio premiado
  2. [Opcional] Validar os callbacks de verificação do lado do servidor (SSV)
  3. Veicular o anúncio premiado com callback de recompensa
  4. Detectar eventos de anúncios premiados
  5. Limpar o anúncio premiado
  6. Pré-carregue o próximo anúncio premiado

Carregar o anúncio premiado

É possível carregar um anúncio premiado usando o método estático Load() na RewardedAd. O objeto RewardedAd carregado é fornecido como uma no gerenciador de conclusão. O exemplo abaixo mostra como carregar uma RewardedAd:


  // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
  private string _adUnitId = "unused";
#endif

  private RewardedAd _rewardedAd;

  /// <summary>
  /// Loads the rewarded ad.
  /// </summary>
  public void LoadRewardedAd()
  {
      // Clean up the old ad before loading a new one.
      if (_rewardedAd != null)
      {
            _rewardedAd.Destroy();
            _rewardedAd = null;
      }

      Debug.Log("Loading the rewarded ad.");

      // create our request used to load the ad.
      var adRequest = new AdRequest();

      // send the request to load the ad.
      RewardedAd.Load(_adUnitId, adRequest,
          (RewardedAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("Rewarded ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Rewarded ad loaded with response : "
                        + ad.GetResponseInfo());

              _rewardedAd = ad;
          });
  }

[Opcional] Validar os callbacks de verificação do lado do servidor (SSV)

Apps que exigem dados extras na verificação do lado do servidor retornos de chamada devem usar o recurso de dados personalizados dos anúncios premiados. Qualquer valor de string definido em um objeto de anúncio premiado é transmitido ao custom_data. parâmetro de consulta do retorno de chamada de SSV. Se nenhum valor de dados personalizado for definido, o O valor do parâmetro de consulta custom_data não estará presente no callback SSV.

O exemplo de código a seguir demonstra como definir as opções de SSV após o anúncio premiado é carregado.

// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
    // If the operation failed, an error is returned.
    if (error != null || ad == null)
    {
        Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
        return;
    }

    // If the operation completed successfully, no error is returned.
    Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());

    // Create and pass the SSV options to the rewarded ad.
    var options = new ServerSideVerificationOptions
                          .Builder()
                          .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                          .Build()
    ad.SetServerSideVerificationOptions(options);

});

Se você quiser definir uma string de prêmio personalizada, faça isso antes de mostrar o anúncio.

Veicular o anúncio premiado com callback de recompensa

Ao apresentar seu anúncio, você precisa fornecer um callback para processar a recompensa por o usuário. Os anúncios só podem ser exibidos uma vez por carregamento. Use o método CanShowAd() para verificar se o anúncio está pronto para ser exibido.

O código a seguir apresenta o melhor método para exibir um anúncio premiado.

public void ShowRewardedAd()
{
    const string rewardMsg =
        "Rewarded ad rewarded the user. Type: {0}, amount: {1}.";

    if (rewardedAd != null && rewardedAd.CanShowAd())
    {
        rewardedAd.Show((Reward reward) =>
        {
            // TODO: Reward the user.
            Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
        });
    }
}

Detectar eventos de anúncios premiados

Para personalizar ainda mais o comportamento de seu anúncio, você pode vincular vários eventos no ciclo de vida do anúncio: abertura, fechamento e assim por diante. Ouvir esses eventos registrando um delegado como mostrado abaixo.

private void RegisterEventHandlers(RewardedAd ad)
{
    // Raised when the ad is estimated to have earned money.
    ad.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    ad.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Rewarded ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    ad.OnAdClicked += () =>
    {
        Debug.Log("Rewarded ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    ad.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Rewarded ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);
    };
}

Limpar o anúncio premiado

Quando terminar de usar uma RewardedAd, chame Destroy(). antes de descartar sua referência a ele:

_rewardedAd.Destroy();

Isso notifica o plug-in de que o objeto não é mais usado e que a memória ocupações podem ser recuperadas. A falha em chamar esse método resulta em vazamentos de memória.

Pré-carregue o próximo anúncio premiado

RewardedAd é um objeto de uso único. Isso significa que, assim que um anúncio premiado for exibido, o objeto não poderá ser usado novamente. Para solicitar outro anúncio premiado, você vai precisar criar um novo objeto RewardedAd.

Para preparar um anúncio premiado para a próxima oportunidade de impressão, pré-carregue o anúncio premiado, uma vez que OnAdFullScreenContentClosed ou OnAdFullScreenContentFailed evento de anúncio é gerado.

private void RegisterReloadHandler(RewardedAd ad)
{
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Rewarded Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
    // Raised when the ad failed to open full screen content.
    ad.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Rewarded ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadRewardedAd();
    };
}

Outros recursos