Cómo utilizar la colocación de anuncios

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.

Prerequisites

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

Antes de cargar anuncios, llama a MobileAds.Initialize() para inicializar el SDK de anuncios para dispositivos móviles, con una devolución de llamada Action<InitializationStatus>. 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 colocación de anuncios. Puedes seleccionar una posición de anuncio de banner, intersticial o recompensado desde Assets &Google Mobile Ads > Ad Placement en Unity Editor. Luego, se configuran tres posiciones de anuncios de demostración que están listas para usar.

Para agregar una colocación de anuncios nueva, haz clic en el botón Agregar posición nueva al final de la lista. Puede configurar la posición de anuncios desde la vista Inspector.

Configuración de la posición del anuncio

Cada posición tiene las siguientes propiedades:

Nombre de la ubicación
El nombre de la posición Se utilizan para identificar posiciones cuando se configuran anuncios en una escena.
Formato del anuncio
Anuncio intersticial, recompensado, intersticial. Indica el tipo de anuncio.
ID de la unidad de anuncios
Proporciona tu ID de bloque de anuncios en forma de banner para iOS y Android. Debes proporcionar al menos un ID de bloque de anuncios.
Es persistente en todas las escenas
Cuando se marca, el banner permanece en la pantalla independientemente de los cambios de escena (el mismo comportamiento que DontDestroyOnLoad).
Carga automática habilitada
Cuando se marca, se carga automáticamente un anuncio cuando se carga una escena asociada con la posición del anuncio.

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

Cómo agregar un AdGameObject a la escena

Puedes agregar un objeto AdGameObject para formatos de banner, intersticial o recompensado a tu escena con GameObject > Google Mobile Ads en Unity Editor. Selecciona el formato para agregar una posición a la escena activa.

Una vez que agregues 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 la siguiente captura de pantalla, se muestra un ejemplo de un AdGameObject llamado Banner Ad.

Configuración de AdGameObject

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

Ubicación del anuncio

Seleccione la posición del anuncio de la lista desplegable de posiciones configuradas. La lista solo tendrá bloques de anuncios con el formato adecuado. Por ejemplo, en el caso de los objetos para juegos de anuncios de banner, el menú desplegable mostrará solo las posiciones de anuncios de banner configurados.

Configuración de BannerAdGameObject (solo banner)

  • Tamaño: Selecciona el tamaño del banner que deseas usar.
    • 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.
      • Use full screen width: Cuando se marca esta opción, el banner ocupará todo el ancho de la pantalla. Puedes ajustar el porcentaje del ancho de la pantalla (50~99%) si desmarcas la opción Use full screen width.
    • 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

Puede implementar funciones que correspondan a las devoluciones de llamada de anuncios. Por ejemplo, si deseas controlar cuándo no se puede cargar un anuncio de banner:

  1. Cree una función 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 en la escena.

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

  4. Seleccione la función que desea vincular a la devolución de llamada del anuncio. Para las devoluciones de llamada de anuncios con parámetros, selecciona la función que acepte la variable dinámica a fin de obtener el valor del parámetro del SDK.

Cómo usar AdGameObject desde una secuencia de comandos

Obtenga la instancia de AdGameObject de la secuencia de comandos

Todos los objetos AdGameObject tienen el método de conveniencia LoadAd(). De esta manera, se cargará un anuncio con una AdRequest simple 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 de la siguiente manera:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Cómo acceder al objeto de anuncio subyacente en AdGameObject

Estos fragmentos muestran 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;

Examples

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 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 lo siguiente: Ten en cuenta que la función Auto Load en AdGameObject no funcionará si te olvidas de inicializar el SDK.

Luego, muestra un anuncio intersticial entre la transición de 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 la transición de una escena y

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 Carga automática en la colocación de anuncios, no es necesario que solicites un anuncio explícitamente. Cuando cambie la escena, aparecerá un anuncio intersticial si está listo.

Si deseas solicitar manualmente un anuncio, inhabilita la función Carga automática desde el inspector de posiciones de anuncios 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 de un botón de anuncios recompensados

A continuación, te mostramos un ejemplo de cómo habilitar un botón para mirar un anuncio recompensado con colocaciones de anuncios.

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

En el método Start(), cambia el estado activo del botón a false. Eso 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 colocación de anuncios recompensados de demostración de AdMob en el menú desplegable.

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

Arrastra y suelta el objeto GameObject que agregaste en el paso anterior al campo Ninguno (objeto). Selecciona la 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 enviar true como parámetro (llama a SetActive(true)).

En esta sección de devoluciones de llamada, 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, haz clic en el botón para mostrar un anuncio recompensado cuando hagas clic. En la sección de devoluciones de llamadas OnClick() del inspector de botones, haz clic en el botón + y arrastra y suelta el GameObject de posición de anuncio recompensado (en este ejemplo, anuncio recompensado) 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 para la escena utilizada 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.

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 en una posición de anuncio recompensado, de manera que puedas proporcionarle una recompensa 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);
    }
    ...
}

Conecta la secuencia de comandos RewardedTestScript a cualquier GameObject (excepto el AdObject de colocación de anuncios) 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 llamada del inspector RewardedAdGameObject, haz clic en el botón + en Recompensa obtenida por el usuario (recompensa) para permitir que se llame a la función cuando se otorgue una recompensa a un usuario.

Arrastra y suelta el GameObject de la cámara principal que agregaste en el paso anterior al campo Ninguno (objeto). Selecciona la 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 veas un anuncio recompensado, se invocará RewardedTestScript.OnUserEarnedReward() cuando se te otorgue una recompensa por interactuar con el anuncio.