Canais de anúncio

Este guia mostra como usar o recurso de posições do anúncio do plug-in dos anúncios para dispositivos móveis do Google para Unity para criar e exibir anúncios de display no seu app.

Pré-requisitos

Inicializar o Google Mobile Ads Unity Plugin

Antes de carregar anúncios, chame MobileAds.Initialize() para inicializar Google Mobile Ads Unity Plugin com um callback Action<InitializationStatus>. Isso só precisa ser feito uma vez, de preferência na inicialização do app.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize Google Mobile Ads Unity Plugin.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Criar posições do anúncio

A primeira etapa para exibir um banner com os anúncios para dispositivos móveis do Google é criar e configurar uma posição do anúncio. Você pode selecionar uma posição do anúncio de banner, intersticial ou premiado em Assets > Google Mobile Ads > Ad Placements no Unity Editor. Três posições de anúncio de demonstração são configuradas e ficam prontas para uso.

Para adicionar uma nova posição do anúncio, clique no botão Add New Placement no final da lista. É possível configurar a posição do anúncio na visualização do Inspetor.

Configuração de posição do anúncio

Cada posição tem as seguintes propriedades:

Nome do canal
Nome da posição. Usado para identificar posições ao configurar anúncios em uma cena.
Formato do anúncio
Banner, premiado, intersticial. Tipo do anúncio.
ID do bloco de anúncios
Informe o ID do bloco de anúncios de banner para Android e iOS. É necessário fornecer pelo menos um ID de bloco de anúncios.
Persistente entre cenas
Quando marcada, o banner vai persistir na tela, independentemente das mudanças de cena (mesmo comportamento de DontDestroyOnLoad).
Carregamento automático ativado
Quando marcada, um anúncio será carregado automaticamente quando uma cena associada à posição do anúncio for carregada.

A captura de tela a seguir mostra um exemplo de uma posição do anúncio chamada My Awesome Banner.

Como adicionar um AdGameObject à cena

É possível adicionar um AdGameObject para formatos de banner, intersticial ou premiado à sua cena usando GameObject > Anúncios para Dispositivos Móveis do Google no Unity Editor. Selecione o formato para adicionar uma posição à cena ativa.

Depois de adicionar um AdGameObject à cena, você vai encontrar um GameObject representando o anúncio na visualização de hierarquia do Unity Editor.

Para mudar o nome da posição, altere o nome do próprio GameObject. A captura de tela abaixo mostra um exemplo de um AdGameObject chamado anúncio de banner.

Configurações de AdGameObject

É possível configurar o AdGameObject na sua cena na visualização do Inspetor nas configurações do componente Ad Game Object (Script).

Posicionamento do anúncio

Selecione a posição do anúncio na lista suspensa de posições configuradas. A lista só terá blocos de anúncios para o formato correto. Por exemplo, para objetos de jogo de anúncio de banner, o menu suspenso vai mostrar apenas as posições de anúncio de banner configuradas.

Configuração de BannerAdGameObject (somente banner)

  • Tamanho: selecione o tamanho do banner que você quer usar.
    • O banner adaptativo fixo oferece mais algumas opções:
      • Orientação: selecione a orientação do dispositivo usada para calcular a altura do anúncio.
      • Usar a largura total da tela: quando marcada, o banner ocupa toda a largura da tela. Você pode ajustar a porcentagem da largura da tela (50% a 99%) se desmarcar a opção Usar a largura total da tela.
    • Personalizado: permite que você informe a largura e a altura do banner.
  • Posição do anúncio: selecione a posição em que o banner deve ser colocado.

Callbacks

É possível implementar funções que correspondem a callbacks de anúncios. Por exemplo, se você quiser lidar com uma falha no carregamento de um anúncio de banner:

  1. Crie uma função compatível com o callback de anúncio.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Anexe o script que contém a função acima a qualquer GameObject na cena.

  3. Clique no botão + e arraste e solte o GameObject ao qual você anexou o script.

  4. Selecione a função que você quer vincular ao callback de anúncio. Para os callbacks de anúncios parametrizados, selecione a função para aceitar a variável dinâmica e receber o valor do parâmetro do SDK.

Usar AdGameObject do script

Acessar a instância do AdGameObject no script

Todos os objetos AdGameObject têm o método de conveniência LoadAd(). Isso vai carregar um anúncio com um AdRequest simples e sem segmentação. Para aplicar a segmentação, use LoadAd(AdRequest adRequest) com sua própria solicitação de anúncio configurada.

Para receber a instância de um AdGameObject, use o seguinte método para cada formato:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

O objeto BannerAdGameObject retornado também tem os métodos de conveniência Hide() e Show().

Intersticial

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

O objeto InterstitialAdGameObject retornado tem um método de conveniência ShowIfLoaded().

Premiado

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

O objeto RewardedAdGameObject retornado tem um método de conveniência ShowIfLoaded().

Por exemplo, é possível receber uma instância de um BannerAdGameObject e carregá-la da seguinte maneira:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

Se houver um BannerAdGameObject chamado BannerAd, será possível acessar uma instância dele da seguinte forma:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Acessar o objeto de anúncio subjacente em AdGameObject

Estes snippets mostram como acessar o objeto de anúncio associado ao AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

Intersticial

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

Premiado

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

Exemplos

Mostrar um anúncio intersticial

Veja um exemplo de como configurar um jogo para carregar e mostrar um anúncio intersticial usando um AdGameObject.

Adicione um InterstitialAdGameObject à cena e ative o recurso Auto Load Enabled para que o anúncio seja carregado automaticamente quando a cena for carregada.

Em seguida, verifique se você inicializou o SDK da seguinte maneira. O recurso de carregamento automático no AdGameObject não vai funcionar se você esquecer de inicializar o SDK.

Em seguida, mostre um anúncio intersticial entre uma transição de tela chamando a função InterstitialAdGameObject.ShowIfLoaded(). O código a seguir mostra um exemplo de exibição de um anúncio intersticial entre uma transição de cena.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

Como você ativou o recurso Carregamento automático na posição do anúncio, não é necessário solicitar um anúncio explicitamente. Quando a cena mudar, um anúncio intersticial vai aparecer se estiver pronto.

Se você quiser solicitar um anúncio manualmente, desative o recurso Carregamento automático no inspetor de posições do anúncio e chame a função InterstitialAdGameObject.LoadAd(). O snippet de código a seguir mostra como solicitar um anúncio manualmente.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

Processar o estado do botão "assistir a um anúncio premiado"

Veja um exemplo de como ativar um botão "assistir um anúncio premiado" usando posições de anúncio.

Adicione um GameObject de botão (chamado Button neste exemplo) à cena, que será usado para mostrar um anúncio premiado. Esse botão só vai aparecer quando houver um anúncio premiado disponível.

No método Start(), mude o estado ativo do botão para false. Isso vai fazer o botão desaparecer da cena.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

Adicione um RewardedAdGameObject à cena e selecione a posição do anúncio Anúncio premiado de demonstração da AdMob no menu suspenso.

Na seção "Callbacks" do inspetor RewardedAdGameObject, clique no botão + de On Ad Loaded() para permitir que a função seja chamada quando um anúncio premiado for carregado.

Arraste e solte o GameObject do botão que você adicionou na etapa anterior no campo None (Object). Selecione uma função a ser chamada no menu suspenso. Clique em No Function > GameObject > SetActive(bool) e marque a caixa de seleção para que ela envie true como um parâmetro (chamadas SetActive(true)).

Nessa seção de callbacks, você também pode vincular um evento que será chamado quando o evento RewardedAd.OnUserEarnedReward for acionado. Para mais detalhes, consulte esta seção.

Em seguida, faça com que o botão mostre um anúncio premiado quando clicado. Na seção de callbacks On Click() no inspetor de botões, clique no botão + e arraste e solte o GameObject de posição do anúncio premiado (chamado de Anúncio premiado neste exemplo) no campo Nenhum (objeto).

Em seguida, anexe a função RewardedAdGameObject.ShowIfLoaded() ao callback On Click() do botão.

Por fim, não se esqueça de inicializar o SDK. O snippet de código abaixo é o código completo da cena usada neste exemplo:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

Depois de executar o projeto, você vai ver o botão exibido na cena quando um anúncio premiado for carregado e estiver pronto para ser mostrado.

Configurar um callback de recompensa para um RewardedAdGameObject

Veja um exemplo de como configurar um callback premiado para uma posição de anúncio premiado. Assim, você pode dar uma recompensa a um usuário quando uma função de callback é chamada.

Crie um novo script e defina uma função que aceite Reward como parâmetro, da seguinte maneira.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

Anexe o script RewardedTestScript a qualquer GameObject (exceto o GameObject de posição do anúncio) na cena. Neste exemplo, ele está anexado ao GameObject da câmera principal.

Adicione um RewardedAdGameObject à cena. Em seguida, na seção "Callbacks" do inspetor RewardedAdGameObject, clique no botão + em On User Earned Reward (Reward) para permitir que a função seja chamada quando uma recompensa for concedida a um usuário.

Arraste e solte o GameObject da câmera principal que você adicionou na etapa anterior ao campo None (Object). Selecione uma função a ser chamada no menu suspenso. Clique em No Function > RewardedTestScript > OnUserEarnedReward.

Depois de executar o projeto e assistir a um anúncio premiado, RewardedTestScript.OnUserEarnedReward() será invocado quando você receber uma recompensa por interagir com o anúncio.