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 exibir anúncios no seu app.

Pré-requisitos

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

Antes de carregar anúncios, inicialize o SDK de anúncios para dispositivos móveis chamando MobileAds.Initialize() 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 the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Criação de posicionamentos do anúncio

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

Para adicionar uma nova posição do anúncio, clique no botão Adicionar nova posição no fim da lista. É possível configurar o posicionamento do anúncio na visualização do Inspetor.

Configuração do posicionamento do anúncio

Cada posição tem as seguintes propriedades:

Nome do canal
Nome do canal. 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
Forneça o ID do bloco de anúncios de banner para Android e iOS. É necessário informar pelo menos um ID de bloco de anúncios.
Permanente em todos os cenários
Quando marcada, o banner persiste na tela independentemente das mudanças de cena (mesmo comportamento que DontDestroyOnLoad).
Carregamento automático ativado
Se esta opção for 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 de anúncio chamada My Awesome Banner.

Adicionar um AdGameObject à cena

É possível adicionar um AdGameObject para formatos de banner, intersticial ou premiado ao cenário usando GameObject > Google Mobile Ads no Editor do Unity. Selecione o formato para adicionar uma posição à cena ativa.

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

É possível mudar o nome da posição mudando o próprio nome do GameObject. A captura de tela a seguir mostra um exemplo de um AdGameObject chamado Banner Ad.

Configurações do AdGameObject

É possível configurar o AdGameObject na sua cena na visualização do Inspector, nas configurações do componente Objeto do jogo do anúncio (script).

Posicionamento do anúncio

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

Configuração do 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 em tela cheia: quando marcada, o banner ocupa a largura total da tela. Você pode ajustar a porcentagem de largura da tela (50 a 99%) se desmarcar a opção Usar a largura em tela cheia.
    • Personalizado: permite informar a largura e a altura do banner.
  • Posição do anúncio: selecione a posição do banner.

Callbacks

Você pode implementar funções que correspondam a callbacks de anúncios. Por exemplo, se você quiser processar o carregamento de um anúncio de banner:

  1. Crie uma função compatível com o callback do 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, em seguida, arraste e solte o GameObject ao qual você anexou o script.

  4. Selecione a função que você quer vincular ao callback do 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 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 não segmentado. Para aplicar a segmentação, use LoadAd(AdRequest adRequest) com sua própria solicitação de anúncio configurada.

Para obter 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 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 conseguir 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á conseguir uma instância dele como esta:

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

Acessar o objeto de anúncio subjacente no AdGameObject

Esses snippets demonstram como acessar o objeto de anúncio subjacente 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 Carregamento automático para que o anúncio seja carregado automaticamente quando a cena for carregada.

Em seguida, inicialize o SDK usando o código a seguir. O recurso Carregamento automático no AdGameObject não funcionará se você se esquecer de inicializar o SDK.

Em seguida, exiba 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 precisa solicitar um anúncio explicitamente. Quando o cenário mudar, um anúncio intersticial vai aparecer, se um estiver pronto.

Se você quiser solicitar um anúncio manualmente, desative o recurso Carregamento automático do Inspetor de posições de 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 o botão "Assistir um anúncio premiado" usando posicionamentos de anúncio.

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

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

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

Adicione um RewardedAdGameObject à cena e selecione o posicionamento 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 No anúncio carregado() para ativar a função que será chamada quando um anúncio premiado for carregado.

Arraste e solte o GameObject do botão adicionado 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 clique na caixa de seleção para enviar true como um parâmetro (chama SetActive(true)).

Nesta seção "Callbacks", você também pode vincular um evento que vai ser chamado quando o evento RewardedAd.OnUserEarnedReward for acionado. Para mais detalhes, consulte esta seção.

Em seguida, configure o botão para exibir um anúncio premiado quando for clicado. Na seção On Click() Callbacks no inspetor de botões, clique no botão + e arraste e solte o GameObject da posição de anúncio premiado (chamado Anúncio premiado neste exemplo) no campo None (Object).

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

Por último, 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, o botão vai aparecer na cena quando um anúncio premiado for carregado e 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, para dar um prêmio a um usuário quando uma função de callback for chamada.

Crie um novo script e defina uma função que aceite Reward como um parâmetro, conforme mostrado a seguir.

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) no cenário. 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 No prêmio recebido pelo usuário (recompensa) para ativar a função que será chamada quando uma recompensa for concedida a um usuário.

Arraste e solte o GameObject da câmera principal adicionado na etapa anterior no campo None (Object). No menu suspenso, selecione uma função a ser chamada. Clique em No Function > RewardedTestScript > OnUserRevenueedRecompensa.

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