Este guia mostra como usar o complemento de anúncios nativos para implementar anúncios nativos da AdMob em um app Unity, além de algumas considerações importantes ao longo do processo.
Os anúncios nativos correspondem tanto à forma quanto à função da experiência do usuário em que são inseridos. Eles também correspondem ao design visual do app em que estão inseridos. Com o formato de anúncio nativo da AdMob, os publishers podem renderizar anúncios que combinam com o conteúdo. Você pode usar essa tecnologia para implementar renderizações altamente personalizadas que aproveitam ao máximo o código nativo em apps do Unity.
Os anúncios nativos são mostrados usando os mesmos tipos de GameObjects
que você já usa para criar seus apps. Eles podem ser formatados para corresponder ao design visual da experiência do usuário em que estão inseridos. Quando um anúncio nativo é carregado, o app
recebe um objeto nativo que contém os recursos e o app Unity (em vez do
SDK) os exibe.
Pré-requisitos
- Plug-in de anúncios para dispositivos móveis do Google para Unity versão 7.0.0 ou mais recente.
- Conclua o Guia para iniciantes.
- Faça o download e instale o complemento de anúncios nativos.
Carregar formatos de anúncios nativos
Os anúncios nativos são carregados pela classe AdLoader
, que tem a própria classe AdLoader.Builder
para personalização durante a criação. O método ForNativeAd()
configura o AdLoader para processar anúncios nativos.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Registrar eventos de anúncio do AdLoader
Para receber uma notificação quando um anúncio nativo é carregado ou não, adicione
delegados à classe AdLoader
para os eventos listados abaixo.
OnNativeAdLoaded
Invocado quando um anúncio nativo é carregado. É necessário ter um delegado para que esse evento acesse o anúncio carregado.
OnAdFailedToLoad
Invocado quando um anúncio nativo não é carregado.
Carregar o anúncio
Depois de criar um AdLoader
, chame o método LoadAd()
dele para
solicitar um anúncio:
adLoader.LoadAd(new AdRequest.Builder().Build());
Montar a solicitação de anúncio
O snippet de código abaixo demonstra como criar um AdLoader
configurado para solicitar anúncios nativos, define delegados para carregamentos de anúncios bem-sucedidos e com falha e faz uma solicitação de anúncio.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Processar falhas no carregamento de anúncios
O evento OnAdFailedToLoad
é do tipo EventHandle<AdFailedToLoadEventArgs>
.
A análise do motivo de uma falha no carregamento de um anúncio desse evento é mostrada abaixo.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Mostrar um anúncio nativo
Quando um anúncio nativo é carregado, o evento de anúncio do formato correspondente é invocado. O app é responsável por mostrar o anúncio, mas não precisa fazer isso imediatamente.
Processar o carregamento de anúncios
O evento OnNativeAdLoaded
é do tipo EventHandler<NativeAdEventArgs>
. O anúncio, encapsulado em um objeto NativeAd
, pode ser recuperado de NativeAdEventArgs
, conforme mostrado:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Recuperar recursos de anúncios nativos
Depois que os anúncios são carregados, é possível acessar os recursos deles, conforme mostrado abaixo. Os recursos gráficos são retornados como objetos Texture2D
, e os recursos de texto são retornados como objetos string
.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Os recursos de anúncio só podem ser acessados na linha de execução principal, por exemplo, pelo método Update()
de um script do Unity. Além disso, observe que os recursos a seguir não têm garantia de presença e precisam ser verificados antes de serem exibidos:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Recurso das Opções de anúncios
É obrigatório mostrar o recurso de anúncio Opções de anúncios como parte do anúncio nativo. Além disso, o recurso do anúncio de Opções de anúncios precisa estar facilmente visível. Escolha cores de fundo e imagens adequadas.
Registrar GameObjects para recursos de anúncio
É necessário registrar o GameObject
para que o recurso de anúncio seja exibido no seu
app Unity. Se o registro for bem-sucedido, o método usado para registrar o
GameObject
vai retornar um bool
. Para um List<GameObject>
, o método retorna um
int
indicando a contagem de GameObject
registrados com sucesso.
Se o registro de um recurso de anúncio não for concluído, as impressões e os cliques no anúncio nativo correspondente não serão reconhecidos.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
O GameObject
registrado para um recurso de anúncio precisa ter um componente Collider convexo que seja representativo do tamanho e da forma do GameObject
. Se os objetos GameObject
registrados nos recursos de anúncio estiverem sem componentes Collider
ou tiverem um configurado incorretamente, os anúncios nativos não vão funcionar corretamente.
No snippet de código abaixo, um BoxCollider
é adicionado a um GameObject
que usa um
TextMesh
para mostrar o recurso de anúncio de título de um anúncio nativo. Depois que o
BoxCollider
for anexado ao GameObject
, ele será dimensionado automaticamente para
acomodar o texto do componente TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Demonstração
O código a seguir demonstra como recuperar o recurso de ícone de um anúncio nativo carregado
com sucesso, mostrar o recurso de ícone definindo a textura de um Quad
e registrar o GameObject
a ser usado para mostrar o recurso. Esse processo de
recuperar o recurso de anúncio e registrá-lo com a classe de anúncio nativo precisa ser
repetido para cada um dos recursos que o app mostra.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}