Canais de anúncio

Este guia mostra como usar o recurso de posicionamentos de anúncios do plug-in dos anúncios para dispositivos móveis do Google para Unity para criar e veicular anúncios no seu app.

Pré-requisitos

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

Antes de carregar anúncios, chame MobileAds.Initialize() para inicializar o SDK dos anúncios para dispositivos móveis do Google com um callback Action<InitializationStatus>. Isso precisa ser feito apenas 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 SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Como criar posições de anúncio

A primeira etapa para mostrar um banner com os anúncios para dispositivos móveis do Google é criar e configurar um posicionamento de anúncio. Selecione um posicionamento de anúncio no formato 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 de anúncio, clique no botão Adicionar nova posição no final da lista. É possível configurar o posicionamento 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 em todas as cenas
Quando marcada, o banner vai permanecer na tela, independente das mudanças de cena (o mesmo comportamento de DontDestroyOnLoad).
Carregamento automático ativado
Quando marcada, um anúncio é carregado automaticamente quando uma cena associada à posição de anúncio é carregada.

A captura de tela a seguir mostra um exemplo de uma posição de anúncio chamada Meu banner incrível.

Adicionar um AdGameObject à cena

Você pode adicionar um AdGameObject para formatos de banner, intersticial ou premiado à sua cena usando GameObject > Anúncios do Google para dispositivos móveis no Unity Editor. Selecione o formato para adicionar uma posição à cena ativa.

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

Para mudar o nome da posição, altere o nome do GameObject. A captura de tela a seguir mostra um exemplo de um AdGameObject chamado Banner Ad.

Configurações do AdGameObject

Você pode configurar o AdGameObject na sua cena na visualização do inspetor nas configurações do componente Objeto de jogo de anúncio (script).

Posicionamento do anúncio

Selecione o posicionamento de anúncio na lista suspensa de posicionamentos configurados. A lista só terá blocos de anúncios no formato certo. Por exemplo, para objetos de jogo de anúncios de banner, o menu suspenso vai mostrar apenas as posições de anúncios 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 largura total da tela: quando marcada, o banner ocupa toda a largura da tela. Você pode ajustar a largura da tela (50 a 99%) se desmarcar a opção Usar largura total da tela.
    • Com a opção Personalizado, você pode informar 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 correspondam a retornos de chamada de anúncios. Por exemplo, se você quiser processar quando um anúncio de banner não for carregado:

  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

Receber a instância AdGameObject do 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 métodos convenientes 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, você poderá acessar uma instância dele assim:

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

Acessar o objeto de anúncio subjacente em AdGameObject

Esses 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

Confira 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 Carregamento automático ativado 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 Carregamento automático em 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 no posicionamento de 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 quiser solicitar um anúncio manualmente, desative o recurso Carregamento automático no inspetor de posições de anúncio e chame a função InterstitialAdGameObject.LoadAd() em vez disso. 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 um anúncio premiado"

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

Adicione um GameObject Button (chamado Button neste exemplo) à cena, que será usada para mostrar um anúncio premiado. Vamos disponibilizar esse botão apenas quando um anúncio premiado estiver disponível.

No método Start(), mude o estado ativo do botão para false. Isso fará com que o botão desapareça da cena.

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

Adicione um RewardedAdGameObject à cena e selecione o posicionamento de anúncio AdMob Demo Rewarded Ad no menu suspenso.

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

Arraste e solte o GameObject Button 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 (chama SetActive(true)).

Nesta seção "Callbacks", também é possível vincular um evento que será chamado quando o evento RewardedAd.OnUserEarnedReward for acionado. Para mais detalhes, consulte esta seção.

Em seguida, crie o botão para mostrar um anúncio premiado quando ele for clicado. Na seção On Click() Callbacks do inspetor de botões, clique no botão + e arraste e solte o GameObject de posicionamento de anúncio premiado (chamado Rewarded Ad neste exemplo) no campo None (Object).

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 a seguir é 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, o botão vai aparecer na cena quando um anúncio premiado for carregado e estiver pronto para ser exibido.

Configurar um callback de recompensa para um RewardedAdGameObject

Confira 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 conforme mostrado abaixo.

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 Ad Placement) 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 ativar a função a ser 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 no campo Nenhum (objeto). Selecione uma função a ser chamada no menu suspenso. Clique em Nenhuma função > RewardedTestScript > OnUserEarnedReward.

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