Incluir anuncios en Unity

En este artículo voy a explicar cómo podemos incluir anuncios en nuestros juegos o aplicaciones de Unity para intentar monetizar nuestros desarrollos. La propia herramienta ya dispone de un sistema llamada Unity Ads que nos simplifica muchísimo esta tarea.

Comenzamos por abrir la ventana Services de Unity.

Como vemos, aun no tenemos creado un ID para nuestro proyecto así que pulsamos el botón Create. Una vez pulsado la ventana Services cambia a lo siguiente:

Como lo que queremos generar son anuncios, pulsamos sobre el botón OFF del apartado Ads. Una vez más, la ventana cambia para entrar dentro de la sección de anuncios. Los activamos pulsando el check marcado en la siguiente imagen.

A continuación indicamos si la aplicación está dirigida a niños menores de 13 años y pulsamos el botón Continue.

Ya tenemos los anuncios habilitados para nuestra aplicación. Ahora podemos consultar nuestro Dashboard que nos llevará a una página web dentro del ecosistema Unity donde tendremos que autenticarnos con nuestro UnityID y contraseña.

Dentro del Dashboard veremos un resumen de los impactos de la publicidad en todos nuestros proyectos. Seleccionamos en el menú de la parte izquierda la opción Projects. Nos aparecerá una lista con todos los proyectos que hemos desarrollado bajo nuestra cuenta de Unity. Seleccionamos aquel donde queremos mostrar anuncios.

Como es normal, nos aparecerá un mensaje diciendo que aun no tiene suficientes datos ya que acabamos de activar el sistema de anuncios.

Aparcamos momentáneamente el Dashboard y volvemos a Unity. Necesitamos ahora incluir el sistema de monetización dentro de nuestra aplicación. Abrimos la ventana Asset Store y buscamos el asset Unity Monetization. En el momento de escribir este artículo estaba por la versión 3.0.3. Lo incluimos en nuestro proyecto como cualquier otro asset.

Una vez incluidas las librerías en nuestro proyecto es hora de volver al Dashboard donde tendremos que crear un Placement. Un Placement es un evento que mostrará información comercial y que puede ser de tres tipos distintos:

  • Non-rewarded: Simplemente mostrará un anuncio que el usuario podrá saltar después de un periodo determinado de tiempo.
  • Rewarded: Permite al usuario conseguir incentivos dentro del juego si ve publicidad.
  • Banner: Permite crear un banner dedicado.

Para este ejemplo crearemos un nuevo Placement personalizado. Vamos, dentro del Dashboard, a la opción Monetization, Placements y pulsamos el botón Add Placement.

Se nos abre una nueva ventana donde elegiremos el nombre y el tipo de anuncio que queremos. En el ejemplo que vamos a llevar a cabo mostraremos un anuncio a toda pantalla en el menú principal de nuestro juego así que le daremos como nombre MenuPrincipal y como tipo elegiremos Interstitial video. Pulsamos el botón Create placement.

Una vez creado aparecerá una pantalla donde podemos configurar nuestro Placement como queramos. Podemos elegir si el usuario puede saltar el anuncio o no, el tipo de anuncio, si el audio está mutado o no, etc.

Una opción importante es la de Ad Filters, en la parte izquierda de la pantalla, dentro del apartado Monetization. Aquí podemos excluir categorías de anuncios para que no aparezcan en nuestra aplicación y también definir qule categoría de edad tendrán los anuncios que aparezcan; es decir, si queremos que aparezcan anuncios para mayores de 17, de 13, de 9 o de 5 años. Este es un apartado importante ya que si nuestra aplicación, dentro de Google Play Store está catalogada para familias y permitimos anuncios para todas las edades podemos tener problemas a la hora de que sea publicada. Para el ejemplo mostraremos anuncios cuya edad mínima sea de 5 años y excluiremos algunas categorías por si acaso. Lógicamente cuantas más categorías excluyamos menores serán nuestros ingresos.

Perfecto. Pues ya tenemos nuestro Placement creado y las librerías de monetización de Unity incluidas en nuestro proyecto. Volvemos a Unity a implementar el sistema de anuncios en sí.

Necesitamos 2 scripts: uno de inicialización del SDK y otro para mostrar el anuncio. Vamos con el de inicialización:

using UnityEngine;
using UnityEngine.Monetization;

public class UnityAdsScript : MonoBehaviour { 

    string gameId = "1234567";
    bool testMode = true;

    void Start () {
        Monetization.Initialize (gameId, testMode);
    }
}

Como veis, en la 5 aparece una variable llamada gameId. Lógicamente esa variable no puede tener el valor “1234567” sino que tenemos que copiar el número que aparece dentro de nuestro Dashboard en el apartado Project Settings.

He tapado datos sensibles de mi proyecto pero el número que tenemos que copiar al script es el que aparece al lado de Google Play Store

Creamos ahora el segundo script. El que mostrará el anuncio:

using System.Collections;
using UnityEngine;
using UnityEngine.Monetization;

public class UnityAdsPlacement : MonoBehaviour {

    public string placementId = "MenuPrincipal";

    public void Start() {
        ShowAd();
    }

    public void ShowAd () {
        StartCoroutine (ShowAdWhenReady ());
    }

    private IEnumerator ShowAdWhenReady () {
        while (!Monetization.IsReady (placementId)) {
            yield return new WaitForSeconds(0.25f);
        }

        ShowAdPlacementContent ad = null;
        ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;

        if(ad != null) {
            ad.Show ();
        }
    }
}

Como vemos, hemos puesto el nombre de nuestro Placement en la variable de la línea 7: MenuPrincipal.

Ya lo tenemos todo listo. Ahora necesitamos incluir estos scripts en nuestra aplicación. Creamos un GameObject vacío en Unity y le llamamos por ejemplo AdsManager. Arrastramos a él nuestros dos scripts, ejecutamos y ¡voila!, ya tenemos nuestro un anuncio a pantalla completa integrado en nuestra aplicación.

Como podéis ver en el script el anuncio es mostrado cada vez que se llega a la pantalla principal. Esto puede ser muy molesto para el usuario de nuestro juego y es probable que decidamos cambiar la lógica de aparición de los anuncios. Por ejemplo en algunos casos lo muestro cada 5 o 6 visitas a la pantalla principal.

Otro detalle a tener en cuenta es que si hemos importado las librerías desde el Asset Store, tenemos que desmarcar la casilla Enable built-in Ads extension que se encuentra en el apartado Advanced del servicio Ads. Si no lo hacemos obtendremos un error al exportar nuestro apk.

Podéis obtener más información en la página:

https://unityads.unity3d.com/help/monetization/getting-started