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
Unity 2017.4 ou mais recente
Faça o download e importe o build inicial do plug-in do GMA Unity.
Defina o ID do app AdMob no Editor do Unity.
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.
- O banner adaptativo fixo oferece mais algumas opções:
- 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:
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, em seguida, 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 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:
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 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.
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
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.