Intersticial premiado (Beta)

O intersticial premiado é um tipo de formato de anúncio com incentivos que permite oferecer recompensas em anúncios que aparecem automaticamente durante transições naturais do app. Diferente dos anúncios premiados, os usuários não precisam aceitar a visualização de um intersticial premiado.

Pré-requisitos

Sempre teste com anúncios de teste

O exemplo de código abaixo contém um ID do bloco de anúncios que pode ser usado para solicitar anúncios de teste. Ele foi configurado especialmente para retornar anúncios de teste em vez de anúncios de produção para cada solicitação, o que o torna seguro para uso.

No entanto, depois de registrar um app na interface da Web do Ad Manager e criar seus próprios IDs de bloco de anúncios para uso no app, configure o dispositivo como um dispositivo de teste durante o desenvolvimento.

/21775744923/example/rewarded-interstitial

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

Antes de carregar anúncios, chame MobileAds.Initialize() para que o app inicialize o SDK de anúncios para dispositivos móveis. 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 o callback ocorra antes de carregar anúncios, porque isso garante que todos os adaptadores de mediação sejam inicializados.

Implementação

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

  1. Carregar o anúncio intersticial premiado
  2. [Opcional] Validar callbacks de verificação do lado do servidor (SSV, na sigla em inglês)
  3. Mostrar o anúncio intersticial premiado com callback de recompensa
  4. Ouvir eventos de anúncios intersticiais premiados
  5. Limpar o anúncio intersticial premiado
  6. Pré-carregar o próximo anúncio intersticial premiado

Carregar o anúncio intersticial premiado

O carregamento de um anúncio intersticial premiado é feito usando o método estático Load() na classe RewardedInterstitialAd. O método de carregamento requer um ID do bloco de anúncios, um objeto AdManagerAdRequest e um gerenciador de conclusão que é ativado quando o carregamento do anúncio é concluído ou apresenta falha. O objeto RewardedInterstitialAd carregado é fornecido como um parâmetro no gerenciador de conclusão. O exemplo abaixo mostra como carregar uma RewardedInterstitialAd.


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/21775744923/example/rewarded-interstitial";

  private RewardedInterstitialAd _rewardedInterstitialAd;

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

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

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();
      adRequest.Keywords.Add("unity-admob-sample");

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

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

              _rewardedInterstitialAd = ad;
          });
  }

[Opcional] Validar callbacks de verificação do lado do servidor (SSV, na sigla em inglês)

Os apps que exigem dados extras em callbacks de verificação do lado do servidor precisam usar o recurso de dados personalizados de anúncios intersticiais premiados. Qualquer valor de string definido em um objeto de anúncio premiado é transmitido para o parâmetro de consulta custom_data do callback da SSV. Se nenhum valor de dados personalizado for definido, o valor do parâmetro de consulta custom_data não será incluído no callback de SSV.

O exemplo de código abaixo demonstra como definir as opções de SSV depois que o anúncio intersticial com recompensa é carregado.

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

        // If the operation completed successfully, no error is returned.
        Debug.Log("Rewarded interstitial 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 a string de recompensa personalizada, faça isso antes de mostrar o anúncio.

Mostrar o anúncio intersticial premiado com callback de recompensa

Ao apresentar seu anúncio, forneça um callback para processar a recompensa do usuário. Os anúncios só podem ser mostrados uma vez por carregamento. Use o método CanShowAd() para verificar se o anúncio está pronto para ser mostrado.

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

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

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

Ouvir eventos de anúncios intersticiais premiados

Para personalizar ainda mais o comportamento do seu anúncio, você pode se conectar a vários eventos no ciclo de vida do anúncio. Ouça esses eventos registrando um delegado conforme mostrado abaixo.

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

Limpar o anúncio intersticial premiado

Quando terminar de usar um RewardedInterstitialAd, chame o método Destroy() antes de descartar a referência a ele:

_rewardedInterstitialAd.Destroy();

Isso notifica o plug-in de que o objeto não será mais usado e que a memória que ele ocupa pode ser recuperada. A falha na chamada desse método resulta em vazamentos de memória.

Pré-carregar o próximo anúncio intersticial premiado

RewardedInterstitialAd é um objeto de uso único. Isso significa que, depois que um anúncio intersticial premiado é mostrado, o objeto não pode ser usado novamente. Para solicitar outro anúncio intersticial com recompensa, será necessário carregar um novo objeto RewardedInterstitialAd.

Para preparar um anúncio intersticial premiado para a próxima oportunidade de impressão, carregue o anúncio intersticial premiado quando o evento de anúncio OnAdFullScreenContentClosed ou OnAdFullScreenContentFailed for gerado.

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

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

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

Outros recursos