1. Apresentação
Neste codelab, você vai implementar um anúncio de abertura do app AdMob em um app Unity.
O que você criará
Este codelab mostra como implementar um anúncio de abertura do app AdMob em um app Unity usando o plug-in de anúncios para dispositivos móveis do Google para Unity.
Use o link Informar um erro no canto inferior esquerdo da codelab para reportar problemas (bugs no código, erros gramaticais, enunciados confusos, entre outros) que você tiver durante este codelab.
O que você aprenderá
- Como configurar o plug-in dos anúncios para dispositivos móveis do Google para Unity
- Como implementar um anúncio de abertura do app em um app Unity
Recursos necessários
- Unity 2018.4 ou mais recente
- Xcode 12 ou mais recente e CocoaPods (para implantação no iOS)
Qual é seu nível de experiência com a AdMob?
2. Configurar o ambiente de desenvolvimento
Fazer o download do código
Faça o download e extraia o conteúdo do arquivo ZIP. Nele, você vai encontrar a pasta admob-appopen-unity-main
.
Se preferir, clone o repositório do GitHub encontrado na linha de comando:
$ git clone https://github.com/googlecodelabs/admob-appopen-unity
O repositório contém duas pastas:
- starter: código inicial que você vai criar neste codelab.
- complete: código completo para este codelab.
3. Configurar o app e os blocos de anúncios da AdMob
Como o Unity é um SDK de multiplataforma, você precisa adicionar um app e blocos de anúncios para Android e iOS na AdMob.
Configuração para Android
Adicione um app Android e crie blocos de anúncios.
Adicionar um app Android
- No Console da AdMob, clique em ADICIONAR APP no menu Apps.
- Selecione Android como a plataforma. Quando a mensagem O app está disponível em uma app store compatível? aparecer, clique em NÃO.
- Digite
AdMob app open ad
no campo do nome do app. - Não é preciso ativar as métricas do usuário para concluir este codelab. No entanto, recomendamos que você faça isso para entender melhor o comportamento do usuário. Clique em ADICIONAR para concluir o processo.
Criar um bloco de anúncios
- Selecione Anúncio de abertura do app AdMob (Android) no menu Apps do console da AdMob.
- Clique no menu Blocos de anúncios.
|
Geralmente, leva algumas horas para que um novo bloco comece a veicular anúncios.
Se você quiser testar o comportamento do anúncio imediatamente, use os IDs de teste listados nas tabelas de ID do app Android/bloco de anúncios e ID do app iOS/bloco de anúncios.
Configuração para iOS
Adicione um app iOS e crie blocos de anúncios.
Adicionar um app iOS
- No Console da AdMob, clique em ADICIONAR APP no menu Apps.
- Selecione iOS como a plataforma. Quando a mensagem O app está disponível em uma app store compatível? aparecer, clique em NÃO.
- Digite
AdMob app open ad
no campo do nome do app. - Não é preciso ativar as métricas do usuário para concluir este codelab. No entanto, recomendamos que você faça isso para entender melhor o comportamento do usuário. Clique em ADICIONAR para concluir o processo.
Criar um bloco de anúncios
- Selecione o app Anúncios inline da AdMob (iOS) no menu Apps do console da AdMob.
- Clique no menu Blocos de anúncios.
|
Geralmente, leva algumas horas para que um novo bloco comece a veicular anúncios.
Se você quiser testar o comportamento do anúncio imediatamente, use os IDs de app e de bloco de anúncios de teste listados na tabela a seguir.
Opcional: usar o app e os blocos de anúncios de teste da AdMob
Se você quiser seguir o codelab em vez de criar um novo app e blocos de anúncios por conta própria, use os IDs do app AdMob e dos blocos de anúncios de teste listados na tabela a seguir.
ID do app Android/bloco de anúncios
Item | ID do app/bloco de anúncios |
ID do app AdMob |
|
ID do bloco de anúncios |
|
ID do app iOS/bloco de anúncios
Item | ID do app/bloco de anúncios |
ID do app AdMob |
|
ID do bloco de anúncios |
|
Para mais informações sobre anúncios de teste, consulte a documentação para desenvolvedores no links Anúncios de teste para Android e Anúncios de teste para iOS.
4. Adicionar o plug-in de anúncios para dispositivos móveis do Google para Unity
A integração do plug-in dos anúncios para dispositivos móveis do Google para Unity é a primeira etapa para veicular anúncios da AdMob e gerar receita.
Fazer o download do plug-in dos anúncios para dispositivos móveis para Unity
Com o plug-in dos anúncios para dispositivos móveis do Google para Unity, os desenvolvedores veiculam anúncios do Google com facilidade em apps Android e iOS. O plug-in fornece uma interface em C# para solicitar anúncios que é usada por scripts C# no seu projeto do Unity.
Use o link abaixo para fazer o download do pacote do Unity para o plug-in.
Abrir o projeto "starter"
- Inicie o Unity Hub.
- Na guia Projetos, clique no botão ADICIONAR.
- Navegue até a pasta em você extraiu o código do download feito na etapa Configurar o ambiente de desenvolvimento.
- Abra a pasta starter.
- O projeto starter estará na lista de projetos. Clique nele para abrir no editor do Unity.
Importar o plug-in dos anúncios para dispositivos móveis para Unity
- No editor do Unity, selecione Assets > Import Package > Custom Package no menu.
- Selecione o
GoogleMobileAds-{VERSION}.unitypackage
que você salvou na etapa anterior. - Verifique se todos os arquivos estão selecionados e clique em Import.
Definir o ID do app AdMob
- No editor do Unity, selecione Assets > Google Mobile Ads > Settings no menu.
- Insira o ID do app AdMob para Android e iOS em cada campo. Se você quiser seguir o codelab em vez de criar um novo app e blocos de anúncios por conta própria, insira o ID do app AdMob de teste conforme mostrado abaixo.
5. Criar uma classe de utilitários
Crie uma nova classe com o nome AppOpenAdManager
na pasta Scripts. Esta classe gerencia uma variável de instância para acompanhar um anúncio carregado e o ID do bloco de anúncios de cada plataforma.
AppOpenAdManager.cs
using System;
using GoogleMobileAds.Api;
using UnityEngine;
public class AppOpenAdManager
{
#if UNITY_ANDROID
// Test ad unit ID: ca-app-pub-3940256099942544/3419835294
private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
// Test ad unit ID: ca-app-pub-3940256099942544/5662855259
private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
private const string AD_UNIT_ID = "unexpected_platform";
#endif
private static AppOpenAdManager instance;
private AppOpenAd ad;
private bool isShowingAd = false;
public static AppOpenAdManager Instance
{
get
{
if (instance == null)
{
instance = new AppOpenAdManager();
}
return instance;
}
}
private bool IsAdAvailable
{
get
{
return ad != null;
}
}
public void LoadAd()
{
// TODO: Load an app open ad.
}
}
Carregar um anúncio
É possível carregar um anúncio usando o método estático AppOpenAd.LoadAd()
. O método de carregamento requer um ID do bloco de anúncios, um modo ScreenOrientation
, um objeto AdRequest
e um gerenciador de conclusão que é ativado quando o carregamento do anúncio é concluído ou apresenta falha.
O objeto AppOpenAd
carregado é fornecido como um parâmetro no gerenciador de conclusão. Implemente o método LoadAd()
conforme abaixo.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void LoadAd()
{
AdRequest request = new AdRequest.Builder().Build();
// Load an app open ad for portrait orientation
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
// Handle the error.
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
// App open ad is loaded.
ad = appOpenAd;
}));
}
}
Mostrar o anúncio
Antes de veicular o anúncio, faça o registro de cada manipulador de eventos para acompanhar o evento de anúncio.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void ShowAdIfAvailable()
{
if (!IsAdAvailable || isShowingAd)
{
return;
}
ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
ad.OnPaidEvent += HandlePaidEvent;
ad.Show();
}
private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Closed app open ad");
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
isShowingAd = false;
LoadAd();
}
private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
{
Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
LoadAd();
}
private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Displayed app open ad");
isShowingAd = true;
}
private void HandleAdDidRecordImpression(object sender, EventArgs args)
{
Debug.Log("Recorded ad impression");
}
private void HandlePaidEvent(object sender, AdValueEventArgs args)
{
Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
args.AdValue.CurrencyCode, args.AdValue.Value);
}
}
Considerar a validade dos anúncios
As referências aos anúncios na abertura do app expiram após quatro horas. Os anúncios renderizados mais de quatro horas após o momento da solicitação não são mais válidos e talvez não gerem receita.
Para que um anúncio expirado não seja veiculado, modifique a propriedade IsAdAvailable
para AppOpenAdManager
, que verifica há quanto tempo o anúncio foi carregado. Depois, use esse método para verificar se o anúncio continua válido.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
// TODO: Add loadTime field
private DateTime loadTime;
private bool IsAdAvailable
{
get
{
// TODO: Consider ad expiration
return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
}
}
public void LoadAd()
{
if (IsAdAvailable)
{
return;
}
AdRequest request = new AdRequest.Builder().Build();
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
ad = appOpenAd;
Debug.Log("App open ad loaded");
// TODO: Keep track of time when the ad is loaded.
loadTime = DateTime.UtcNow;
}));
}
}
6. Atualizar a cena para carregar/mostrar o anúncio
Atualize o método Start()
na classe MainScene
para carregar um anúncio de abertura do app quando a cena começar.
Para receber notificações sobre eventos em primeiro plano do app, recomendamos que você consulte o Singleton do AppStateEventNotifier. Quando implementar o delegado AppStateEventNotifier.AppStateChanged
, seu app será alertado sobre a inicialização do app e os eventos em primeiro plano e conseguirá veicular o anúncio.
MainScene.cs
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;
public class MainScene : MonoBehaviour
{
public void Start()
{
// TODO: Request an app open ad.
MobileAds.Initialize((initStatus) =>
{
AppOpenAdManager.Instance.LoadAd();
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
});
}
public void OnAppStateChanged(AppState state)
{
if (state == AppState.Foreground)
{
// TODO: Show an app open ad if available.
AppOpenAdManager.Instance.ShowAdIfAvailable();
}
}
}
Pronto! Crie e execute o projeto em um dispositivo ou emulador. Após iniciar o app, aguarde alguns segundos até que o anúncio seja carregado por completo.
Depois disso, quando você voltar para o app da tela inicial e de outros apps, o anúncio de abertura do app vai aparecer como mostrado abaixo.
7. Pronto!
Você concluiu o codelab. O código final deste codelab está na pasta complete.