En esta guía, se muestra cómo usar la función de posiciones de anuncios del complemento de Unity de Google Mobile Ads para crear y mostrar anuncios en tu app.
Requisitos previos
Unity 2017.4 o una versión posterior
Descarga e importa la compilación inicial del complemento de Unity de GMA.
Configura el ID de tu app de AdMob en Unity Editor.
Cómo inicializar el SDK de anuncios de Google para dispositivos móviles
Antes de cargar anuncios, llama a MobileAds.Initialize()
con una devolución de llamada Action<InitializationStatus>
a fin de inicializar el SDK de anuncios para dispositivos móviles. Esto se debe hacer solo una vez, idealmente cuando se inicia la 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
});
...
}
}
Cómo crear posiciones de anuncios
El primer paso para mostrar un banner con Google Mobile Ads es crear y configurar una ubicación del anuncio. En Unity Editor, puedes seleccionar una posición del anuncio de banner, intersticial o recompensado desde Assets > Google Mobile Ads > Ad placements. Luego, se configuran tres posiciones de anuncios de demostración que están listas para usar.
Para agregar una nueva posición del anuncio, haga clic en el botón Agregar ubicación nueva que se encuentra al final de la lista. Puede configurar la posición del anuncio en la vista Inspector.
Configuración de la posición del anuncio
Cada posición tiene las siguientes propiedades:
- Nombre de la ubicación
- Nombre de la posición Se usa para identificar las posiciones cuando se configuran anuncios en una escena.
- Formato del anuncio
- Banner, recompensado, intersticial. Tipo de anuncio
- ID de la unidad de anuncios
- Proporciona tu ID de bloque de anuncios de banner para iOS y Android. Debes proporcionar al menos un ID de bloque de anuncios.
- Perseverante en las escenas
- Cuando se marca esta opción, el banner permanece en la pantalla sin importar los cambios en la escena (el mismo comportamiento que
DontDestroyOnLoad
). - Carga automática habilitada
- Cuando se marca esta opción, un anuncio se carga de forma automática cuando se carga una escena asociada con la posición del anuncio.
La siguiente captura de pantalla muestra un ejemplo de una posición de anuncio llamada My Awesome Banner (Mi banner increíble).
Cómo agregar un AdGameObject a la escena
Puedes agregar un AdGameObject para los formatos de banner, intersticial o recompensado a tu escena usando GameObject > Google Mobile Ads en el Editor de Unity. Selecciona el formato para agregar una posición a la escena activa.
Una vez que hayas agregado un AdGameObject a la escena, verás un GameObject que representa el anuncio en la vista de jerarquía del Unity Editor.
Puedes cambiar el nombre de la posición si cambias el nombre del GameObject en sí. En la siguiente captura de pantalla, se muestra un ejemplo de un AdGameObject denominado Banner Ad.
Configuración de AdGameObject
Puedes configurar el AdGameObject en tu escena desde la vista Inspector en la configuración para el componente Ad Game Object (Script).
- Ubicación del anuncio
Seleccione la ubicación del anuncio en la lista desplegable de ubicaciones configuradas. La lista solo tendrá bloques de anuncios para el formato correcto. Por ejemplo, para los objetos de juego de anuncios de banner, el menú desplegable mostrará solo las posiciones de anuncios de banner.
- Configuración de
BannerAdGameObject
(solo banner)
- Tamaño: Seleccione el tamaño del banner que desea utilizar.
- El banner adaptable fijo ofrece algunas opciones más:
- Orientation: Selecciona la orientación del dispositivo que se utiliza para calcular la altura del anuncio.
- Usar ancho de pantalla completa: Cuando se marca esta opción, el banner ocupa todo el ancho de la pantalla. Puedes ajustar el porcentaje del ancho de la pantalla (50~99%) si desmarcas la opción Usar ancho de pantalla completa.
- Personalizado le permite proporcionar el ancho y la altura del banner.
- El banner adaptable fijo ofrece algunas opciones más:
- Posición del anuncio: seleccione la posición en la que se debe colocar el banner.
Devoluciones de llamada
Puede implementar funciones que correspondan a las devoluciones de llamada del anuncio. Por ejemplo, si deseas controlar cuándo no se puede cargar un anuncio de banner:
Cree una función compatible con el callback del anuncio.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
Adjunta la secuencia de comandos que contiene la función anterior a cualquier GameObject en la escena.
Haz clic en el botón + y, luego, arrastra y suelta el GameObject al que adjuntaste la secuencia de comandos.
Seleccione la función que desea vincular al callback de anuncios. En el caso de las devoluciones de llamada de anuncios con parámetros, selecciona la función para aceptar la variable dinámica y obtener el valor del parámetro desde el SDK.
Usar AdGameObject desde la secuencia de comandos
Obtenga la instancia de AdGameObject de la secuencia de comandos
Todos los objetos AdGameObject
tienen el método de conveniencia LoadAd()
. Esto cargará
un anuncio con un AdRequest
simple, sin orientación. Para aplicar la orientación, debes usar LoadAd(AdRequest adRequest)
con tu propia solicitud de anuncio configurada.
A fin de obtener la instancia de un AdGameObject, usa el siguiente método para cada formato:
Banner
MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");
El objeto BannerAdGameObject
que se muestra también tiene los métodos de conveniencia Hide()
y Show()
.
Intersticial
MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");
El objeto InterstitialAdGameObject
que se muestra tiene un método de conveniencia ShowIfLoaded()
.
Recompensado
MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");
El objeto RewardedAdGameObject
que se muestra tiene un método de conveniencia ShowIfLoaded()
.
Por ejemplo, puedes obtener una instancia de BannerAdGameObject
y cargarla de la siguiente manera:
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();
...
}
...
}
Si hay un BannerAdGameObject
llamado BannerAd, puedes obtener una instancia como esta:
MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");
Cómo acceder al objeto de anuncio subyacente en AdGameObject
Estos fragmentos demuestran cómo acceder al objeto de anuncio subyacente asociado con 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;
Recompensado
RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
.Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");
// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;
Ejemplos
Cómo mostrar un anuncio intersticial
A continuación, se muestra un ejemplo de cómo configurar un juego para cargar y mostrar un anuncio intersticial con un objeto AdGameObject.
Agrega un InterstitialAdGameObject
a la escena y activa la función Carga automática habilitada para que el anuncio se cargue automáticamente cuando se cargue la escena.
A continuación, asegúrate de haber inicializado el SDK de la siguiente manera: Ten en cuenta que la función Carga automática en AdGameObject no funcionará si te olvidas de inicializar el SDK.
Luego, muestra un anuncio intersticial entre las transiciones de una pantalla llamando a la función InterstitialAdGameObject.ShowIfLoaded()
. En el siguiente código, se muestra un ejemplo de cómo mostrar un anuncio intersticial entre una transición de escena.
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 habilitó la función Carga automática en la colocación de anuncios, no es necesario que solicite un anuncio de manera explícita. Cuando cambie la escena, aparecerá un anuncio intersticial si está listo.
Si deseas solicitar un anuncio de forma manual, inhabilita la función Carga automática desde el inspector de posiciones del anuncio y, en su lugar, llama a la función InterstitialAdGameObject.LoadAd()
. En el siguiente fragmento de código, se muestra cómo solicitar un anuncio de forma manual.
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();
});
}
...
}
Cómo controlar el estado del botón "ver un anuncio recompensado"
A continuación, te mostramos un ejemplo de cómo habilitar un botón para "ver un anuncio recompensado" con colocaciones de anuncios.
Agrega un objeto GameGame de botón (llamado Button en este ejemplo) a la escena, que se utilizará para mostrar un anuncio recompensado. El botón estará disponible solo cuando haya un anuncio recompensado.
En el método Start()
, cambia el estado activo del botón a false
. Esto hará que el botón desaparezca de la escena.
public class MainScene : MonoBehaviour
{
...
void Start()
{
GameObject.Find("Button").SetActive(false);
...
}
}
Agregue un RewardedAdGameObject
a la escena y seleccione la ubicación del anuncio Anuncio de demostración recompensado en el menú desplegable.
En la sección de devoluciones de llamada en el inspector RewardedAdGameObject
, haz clic en el botón + de On Ad Loaded() para habilitar la función a la que se llamará cuando se cargue un anuncio recompensado.
Arrastra y suelta el objeto GameObject que agregaste en el paso anterior al campo Ninguno (Objeto). Selecciona una función en el menú desplegable.
Haz clic en Sin función > GameObject > SetActive(bool) y, luego, haz clic en la casilla de verificación para que envíe true
como parámetro (llamada a SetActive(true)
).
En esta sección de devoluciones de llamada, también puedes vincular un evento que se llamará cuando se active el evento RewardedAd.OnUserEarnedReward
. Para obtener más detalles, consulta esta sección.
Luego, haga clic en el botón para mostrar un anuncio recompensado cuando se haga clic en él. En la sección de devoluciones de llamada On Click() en el inspector de botones, haz clic en el botón + y arrastra y suelta el objeto GameObject de posición de anuncio recompensado (denominado Recompensado de anuncios en este ejemplo) al campo Ninguno (Objeto).
Luego, adjunta la función RewardedAdGameObject.ShowIfLoaded()
a la devolución de llamada On Click() del botón.
Por último, no te olvides de inicializar el SDK. El siguiente fragmento de código es el código completo de la escena que se usa en este ejemplo:
using UnityEngine;
using GoogleMobileAds.Api;
public class MainScene : MonoBehaviour
{
void Start()
{
GameObject.Find("Button").SetActive(false);
MobileAds.Initialize((initStatus) => {
Debug.Log("Initialized MobileAds");
});
}
}
Una vez que ejecutes el proyecto, verás el botón en la escena cuando se cargue un anuncio recompensado y esté listo para mostrarse.
Configura una devolución de llamada de recompensa para un objeto RewardedAdGameObject
El siguiente es un ejemplo de cómo configurar una devolución de llamada recompensada a una posición del anuncio recompensado, de manera que puedas otorgarle una recompensa a un usuario cuando se llame a una función de devolución de llamada.
Crea una secuencia de comandos nueva y define una función que acepte Reward
como parámetro de la siguiente manera.
using UnityEngine;
using GoogleMobileAds.Api;
class RewardedTestScript : MonoBehaviour {
...
public void OnUserEarnedReward(Reward reward) {
Debug.Log("OnUserEarnedReward: reward=" +
reward.Type + ", amount=" + reward.Amount);
}
...
}
Adjunta la secuencia de comandos RewardedTestScript
a cualquier objeto GameObject (excepto AdObject GameObject) en la escena. En este ejemplo, se adjunta al GameObject de cámara principal.
Agrega un elemento RewardedAdGameObject
a la escena. Luego, en la sección de devolución de llamada en el inspector de RewardedAdGameObject
, haz clic en el botón + en On User Gained Reward (Reward) para habilitar la función a la que se llamará cuando se otorgue una recompensa a un usuario.
Arrastra y suelta el GameObject de cámara principal que agregaste en el paso anterior al campo Ninguno (objeto). Selecciona una función a la que se llamará en el menú desplegable. Haz clic en No Function > RewardedTestScript > OnUserGainedReward.
Una vez que ejecutes el proyecto y mires un anuncio recompensado, se invocará RewardedTestScript.OnUserEarnedReward()
cuando se te recompense por interactuar con el anuncio.