Este guia mostra como usar o recurso de posições 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
Unity 2017.4 ou mais recente.
Faça o download e importe a versão inicial do plug-in dos Anúncios para Dispositivos Móveis do Google para Unity.
Defina o ID do app da AdMob no Unity Editor.
Inicializar Google Mobile Ads Unity Plugin
Antes de carregar anúncios, inicialize Google Mobile Ads Unity Plugin chamando
MobileAds.Initialize(), 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
});
...
}
}
Como criar posições de anúncios
A primeira etapa para veicular um banner com os Anúncios para Dispositivos Móveis do Google é criar e configurar uma posição de anúncio. Você pode selecionar uma posição de anúncio de banner, intersticial ou premiado em Assets > Google Mobile Ads > Ad Placements no Unity Editor. Três posições de anúncios de demonstração são configuradas e ficam prontas para uso.

Para adicionar uma nova posição de anúncio, clique no botão Add New Placement no final da lista. Você pode configurar a posição do anúncio na visualização do inspetor.
Configuração da 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 de 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 fornecer pelo menos um ID de bloco de anúncios.
- Persistente entre cenas
- Quando marcada, a opção faz com que o banner permaneça na tela, independentemente das mudanças de cena (o mesmo comportamento de
DontDestroyOnLoad). - Carregamento automático ativado
- Quando marcada, a opção faz com que um anúncio seja carregado automaticamente quando uma cena associada à posição do anúncio é carregada.
A captura de tela a seguir mostra um exemplo de uma posição de anúncio chamada My Awesome Banner.

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

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

É possível mudar o nome da posição alterando o nome do próprio 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 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 jogos de anúncios de banner, a lista suspensa vai mostrar apenas posições de anúncios de banner configuradas.

- Configuração do
BannerAdGameObject(somente banner)
- Tamanho : selecione o tamanho do banner que você quer usar.
- 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, a opção faz com que o banner ocupe a largura total 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ê forneça a largura e a altura do banner.
- Banner adaptativo fixo oferece mais algumas opções:
- Posição do anúncio : selecione a posição em que o banner deve ser colocado.
Callbacks
Você pode implementar funções que correspondam a callbacks de anúncios. Por exemplo, se você quiser processar quando um anúncio de banner não é carregado:
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); }Anexe o script que contém a função acima a qualquer GameObject na cena.
Clique no botão + e arraste e solte o GameObject ao qual você anexou o script.

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 para que você possa receber o valor do parâmetro do SDK.

Usar AdGameObject do script
Receber 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) usando sua própria solicitação de anúncio configurada.
Para receber a instância de um AdGameObject, use o método a seguir para cada formato:
Banner
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 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á receber uma instância de
le desta forma:
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.
Banner
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 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 como mostrar 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 um estiver pronto.
Se você quiser solicitar um anúncio manualmente, desative o recurso Carregamento automático no inspetor de posições de anúncios 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 um anúncio premiado"
Confira um exemplo de como ativar um botão "Assistir um anúncio premiado" usando posições de anúncios.
Adicione um GameObject de botão (chamado Button neste exemplo) à cena, que será usado 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 a posição do anúncio Anúncio premiado de demonstração da AdMob na lista suspensa.
Na seção Callbacks do inspetor RewardedAdGameObject, clique no botão + em On Ad Loaded() para ativar a função a ser 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 na lista suspensa.
Clique em No Function > GameObject > SetActive(bool) e clique na caixa de seleção para que
ela envie true como um parâmetro (chama SetActive(true)).

Nessa seção de 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 com que o botão mostre um anúncio premiado quando clicado. Na seção Callbacks On Click() do inspetor de botões, clique no botão + e arraste e solte o GameObject de posição do 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 mostrado.
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, 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 um 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 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 None (Object). Selecione uma função a ser chamada na lista suspensa. Clique em No Function > RewardedTestScript > OnUserEarnedReward.

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