Ubicaciones del anuncio

En esta guía, se muestra cómo usar la función Ad Placement del complemento Google Mobile Ads para Unity a fin de crear y mostrar anuncios para tu app.

Requisitos previos

Cómo inicializar el SDK de anuncios de Google para dispositivos móviles

Antes de cargar anuncios, inicializa el SDK de anuncios para dispositivos móviles llamando a MobileAds.Initialize() con una devolución de llamada Action<InitializationStatus>. Esto debe hacerse 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 los anuncios de Google para dispositivos móviles es crear y configurar la colocación de un anuncio. Puedes seleccionar una posición de anuncios de formato banner, intersticial o recompensado en Assets > Google Mobile Ads > Ad Placement en Unity Editor. Luego, se configuran tres anuncios de demostración y están listos para usar.

Para agregar una nueva posición de anuncios, haz clic en el botón Add New Placement al final de la lista. Puedes configurar la posición de anuncios en la vista del Inspector.

Configuración de la posición de anuncios

Cada posición tiene las siguientes propiedades:

Nombre de la ubicación
Es el nombre de la posición. Se usa para identificar posiciones cuando se configuran anuncios en una escena.
Formato del anuncio
Banners, anuncios recompensados, intersticiales Es el tipo de anuncio.
ID de la unidad de anuncios
Proporciona el ID de tu unidad de anuncios en forma de banner para iOS y Android. Debes proporcionar al menos un ID de unidad de anuncios.
Perseverante en escenas
Cuando se marca, el banner permanecerá en la pantalla independientemente de los cambios de escena (mismo comportamiento que DontDestroyOnLoad).
Carga automática habilitada
Si se marca esta opción, se cargará automáticamente un anuncio cuando se cargue una escena asociada con la posición del anuncio.

En la siguiente captura de pantalla, se muestra un ejemplo de una posición de anuncios llamada My Awesome Banner.

Cómo agregar un AdGameObject a la escena

Puedes agregar un AdGameObject para formatos de banner, intersticial o recompensado a tu escena a través de GameObject > Google Mobile Ads en Unity Editor. 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 Hierarchy de Unity Editor.

Para cambiar el nombre de la posición, cambia el nombre del GameObject. En la siguiente captura de pantalla, se muestra un ejemplo de un AdGameObject llamado Banner Ad.

Configuración de AdGameObject

Puedes configurar AdGameObject en tu escena desde la vista del Inspector en la configuración del componente Ad Game Object (Script).

Ubicación del anuncio

Selecciona la posición del anuncio en la lista desplegable de posiciones configuradas. La lista solo tendrá unidades de anuncios para el formato correcto. Por ejemplo, para los objetos de juegos de anuncios de banner, el menú desplegable solo mostrará colocaciones de anuncios de banner configuradas.

Configuración de BannerAdGameObject (solo banner)

  • Tamaño: Selecciona el tamaño del banner que quieras usar.
    • El banner adaptable fijo ofrece otras opciones:
      • Orientación: Selecciona la orientación del dispositivo que se usó para calcular la altura del anuncio.
      • Usar el ancho de pantalla completa: Si marcas esta opción, el banner ocupará el ancho de la pantalla completa. Puedes ajustar el porcentaje del ancho de la pantalla (50~99%) si desmarcas la opción Usar el ancho de pantalla completa.
    • La opción Personalizado le permite proporcionar el ancho y la altura del banner.
  • Posición del anuncio: Selecciona la posición en la que se debe colocar el banner.

Devoluciones de llamada

Puedes implementar funciones que correspondan a devoluciones de llamada de anuncios. Por ejemplo, si deseas controlar cuándo no se carga un anuncio banner, haz lo siguiente:

  1. Crea una función que sea compatible con la devolución de llamada del anuncio.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Adjunta la secuencia de comandos que contiene la función anterior a cualquier GameObject de la escena.

  3. Haz clic en el botón +, arrastra y suelta el GameObject al que adjuntaste la secuencia de comandos.

  4. Selecciona la función que deseas vincular a la devolución de llamada del anuncio. En el caso de las devoluciones de llamada de anuncios parametrizadas, selecciona la función que aceptará la variable dinámica para que puedas obtener el valor del parámetro del SDK.

Cómo usar AdGameObject desde la secuencia de comandos

Obtén la instancia AdGameObject de la secuencia de comandos

Todos los objetos AdGameObject tienen el método de conveniencia LoadAd(). Con esta acción, se cargará un anuncio con un AdRequest sin formato y sin segmentación. Para aplicar la segmentació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:

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 un 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 la siguiente:

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.

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 que cargue y muestre un anuncio intersticial con un AdGameObject.

Agrega un elemento 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 usando la siguiente información. Ten en cuenta que la función Carga automática en AdGameObject no funcionará si olvidas inicializar el SDK.

Luego, muestra un anuncio intersticial entre una transición de pantalla llamando a la función InterstitialAdGameObject.ShowIfLoaded(). En el siguiente código, se muestra un ejemplo de 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");
    }
}

Dado que habilitaste la función de carga automática en la colocación de anuncios, no es necesario que solicites un anuncio de manera explícita. Cuando cambie la escena, aparecerá un anuncio intersticial si hay uno listo.

Si deseas solicitar un anuncio de forma manual, inhabilita la función Carga automática en el inspector de posiciones de anuncios y 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();
        });
    }
    ...
}

Controla el estado del botón "mirar un anuncio recompensado"

A continuación, se muestra un ejemplo de cómo habilitar el botón "Mirar un anuncio recompensado" mediante la colocación de anuncios.

Agrega un GameObject de Button (llamado Button en este ejemplo) a la escena, que se usará para mostrar un anuncio recompensado. Haremos que este botón esté disponible solo cuando haya un anuncio recompensado disponible.

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);
        ...
    }
}

Agrega un RewardedAdGameObject a la escena y selecciona la posición de anuncios Anuncio recompensado de demostración de AdMob en el menú desplegable.

En la sección Devoluciones de llamadas del inspector de RewardedAdGameObject, haz clic en el botón + de On Ad Loaded() para habilitar la llamada a la función cuando se cargue un anuncio recompensado.

Arrastra y suelta el GameObject del botón que agregaste en el paso anterior en el campo None (Object). Selecciona una función a la que se llamará en el menú desplegable. Haz clic en No Function > GameObject > SetActive(bool) y, luego, haz clic en la casilla de verificación para que envíe true como parámetro (llama a SetActive(true)).

En esta sección de devoluciones de llamadas, también puedes vincular un evento al que se llamará cuando se active el evento RewardedAd.OnUserEarnedReward. Para obtener más detalles, consulta esta sección.

Luego, crea el botón para que muestre un anuncio recompensado cuando se haga clic en él. Desde la sección de devoluciones de llamadas On Click() en el inspector de botones, haz clic en el botón + y arrastra y suelta el GameObject de posición de anuncios recompensados (llamado Anuncio recompensado en este ejemplo) en el campo Ninguno (Objeto).

Luego, adjunta la función RewardedAdGameObject.ShowIfLoaded() a la devolución de llamada On Click() del botón.

Por último, no olvides 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");
        });
    }
}

Cuando ejecutes el proyecto, verás el botón en la escena cuando se cargue un anuncio recompensado y esté listo para mostrarse.

Cómo configurar una devolución de llamada de recompensa para un RewardedAdGameObject

A continuación, se muestra un ejemplo de cómo configurar una devolución de llamada recompensada para una posición de anuncio recompensado, de modo que puedas dar 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 GameObject (excepto el GameObject de Ad Placement) en la escena. En este ejemplo, se adjunta al GameObject de la cámara principal.

Agrega un elemento RewardedAdGameObject a la escena. Luego, en la sección Devoluciones de llamadas del inspector de RewardedAdGameObject, haz clic en el botón + en Cuando el usuario obtiene una recompensa (recompensa) para habilitar la función 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 en el campo None (Object). En el menú desplegable, selecciona una función a la que se llamará. Haz clic en Sin función > RewardedTestScript > OnUserRevenueedReward.

Una vez que ejecutes el proyecto y mires un anuncio recompensado, se invocará RewardedTestScript.OnUserEarnedReward() cuando debas interactuar con él.