Como usar o posicionamento do anúncio

Este guia mostra como usar o recurso de posicionamento do anúncio do Unity dos anúncios para dispositivos móveis do Google para criar e exibir anúncios no seu aplicativo.

Prerequisites

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 no lançamento 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
        });
        ...
    }
}

Como 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 um posicionamento do anúncio. Você pode selecionar um posicionamento de anúncio do formato banner, intersticial ou premiado em Recursos: anúncios do Google Mobile > Canais no Editor do Unity. Três posições de anúncios de demonstração serão configuradas e prontas para uso.

Para adicionar uma nova posição do anúncio, clique no botão Adicionar nova posição no final da lista. Você pode configurar a posição do anúncio na visualização "Inspetor".

Configuração de posicionamento 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 e intersticial Tipo do anúncio.
ID do bloco de anúncios
Insira 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.
Permanente em cenas
Quando marcada, o banner permanecerá na tela, independentemente das mudanças de cena (mesmo comportamento de DontDestroyOnLoad).
Carregamento automático ativado
Quando marcado, um anúncio é carregado automaticamente quando uma cena associada ao posicionamento dele é carregada.

A captura de tela a seguir mostra um exemplo de posicionamento do anúncio chamado Meu banner incrível.

Adicionar um AdGameObject ao cenário

Você pode adicionar um AdGameObject para formatos de banner, intersticial ou premiado à sua cena usando GameObject > Google Mobile Ads no Editor do Unity. Selecione o formato para adicionar uma posição à cena ativa.

Depois de adicionar um AdGameObject ao cenário, você verá um GameObject representando o anúncio na visualização de hierarquia do editor do Unity.

Você pode alterar o nome do canal mudando o nome do próprio GameObject. A captura de tela a seguir mostra um exemplo de um AdGameObject chamado Anúncio de banner.

Configurações de AdGameObject

Você pode configurar o AdGameObject no cenário na visualização Inspetor, nas configurações do componente Ad Game Object (Script).

Posicionamento do anúncio

Selecione o canal do anúncio na lista suspensa de canais configurados. A lista terá somente blocos de anúncios no formato correto. Por exemplo, para objetos de jogos de anúncios de banner, o menu suspenso mostra apenas as posições de anúncios de banner configuradas.

Configuração 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 de tela cheia: quando selecionado, o banner ocupará a largura em tela cheia. É possível ajustar a porcentagem de largura da tela (50 a 99%) se você desmarcar a opção Usar largura em tela cheia.
    • Personalizado permite fornecer a largura e a altura do banner.
  • Posição do anúncio: selecione a posição do banner.

Callbacks

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

  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 arraste o &Object; 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

Consiga a instância AdGameObject do script

Todos os objetos AdGameObject têm o método de conveniência LoadAd(). Isso 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 acessar 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 gerar 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á gerar uma instância dele desta forma:

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

Acesse o objeto do 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;

Examples

Exibir um anúncio intersticial

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

Adicione um InterstitialAdGameObject ao cenário 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 de 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 será necessário solicitar um anúncio explicitamente. Quando a cena mudar, um anúncio intersticial será exibido se houver um pronto para ser usado.

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 manualmente um anúncio.

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 "Mostrar um anúncio premiado" usando as posições do anúncio.

Adicione à tela um GameObject de botão (chamado Button neste exemplo), que será usado para exibir um anúncio premiado. Disponibilizaremos esse botão somente quando um anúncio premiado estiver disponível.

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

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

Adicione um RewardedAdGameObject ao cenário e selecione o posicionamento do anúncio do anúncio premiado com demonstração da AdMob no menu suspenso.

Na seção "Callbacks" no inspetor RewardedAdGameObject, clique no botão + em 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 adicionado na etapa anterior no campo Nenhum (objeto). Selecione uma função a ser chamada no menu suspenso. Clique em No Function > GameObject > SetActive(bool) e, em seguida, clique na caixa de seleção para enviar true como um parâmetro (chama SetActive(true)).

Nessa 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, faça o botão exibir um anúncio premiado quando clicado. Na seção On Click() da chamada de retorno no inspetor de botão, clique no botão + e arraste e solte o GameObject Placement Premiado (chamado Anúncio premiado neste exemplo) para o 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 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");
        });
    }
}

Após executar o projeto, você verá o botão exibido na cena quando um anúncio premiado for carregado e estiver pronto para ser exibido.

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 que você possa dar uma recompensa 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 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 da posição do anúncio) no cenário. Neste exemplo, ele está anexado ao Main Camera GameObject.

Adicione um RewardedAdGameObject ao cenário. Em seguida, na seção "Callbacks" no inspetor RewardedAdGameObject, clique no botão + em On User Rewarded Reward (Reward) para ativar a função a ser chamada quando um prêmio for concedido a um usuário.

Arraste e solte o GameObject da câmera principal que você adicionou na etapa anterior para o campo Nenhum (objeto). Selecione uma função a ser chamada no menu suspenso. Clique em Sem função > RewardedTestScript > OnUserGanhosedReward.

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