Integrando anuncios de AdMob en Unity con el plugin de Google Ads

Banner Unity y Admob
En este tutorial veremos cómo integrar AdMob, una de las redes de publicidad más populares, con nuestra aplicación o juego de Unity para android. Para ello usaremos el plugin oficial para Unity de Google Ads.

Una de las maneras de monetizar las aplicaciones para smartphones es el uso de publicidad. Esta publicidad suele presentarse en forma de banners, vídeos o popups que se muestran al usuario en determinados momentos de la utilización de la app. Si el usuario hace clic en alguno de los anuncios, el autor de la aplicación recibirá un porcentaje de lo que pague el anunciante por cada clic conseguido. Hay diferentes redes de publicidad que ofrecen diferentes servicios, pero en esta ocasión usaremos AdMob, red que es propiedad de Google. Además de la confianza que puede dar esto último, hay a nuestra disposición un plugin oficial para Unity que facilitará la integración de AdMob.

Descarga de Google Play Services

En primer lugar tenemos que descargar las librerías de Google Play Services, que serán necesarias para el correcto funcionamiento del plugin. Para descargarlas usaremos el Manager del SDK de android que podemos encontrar en la carpeta donde instalamos el SDK con el nombre de SDK Manager.exe

Lo arrancamos y seleccionamos los paquetes correspondientes a Google Play Services. Según he leído conviene descargar también el Google Repository así que lo marcamos también y descargamos e instalamos los paquetes.

Captura de pantalla 2014-09-30 18.00.08

Una vez se hayan descargado las librerías de Google Play Services podemos cerrar el SDK Manager. Mientras se descargan podemos pasar al siguiente paso.

Descarga del plugin de Google Ads e importación a Unity

Como hemos comentado antes, existe un plugin oficial de Google para integrar AdMob con las aplicaciones creadas con Unity, por lo que lo más sabio será utilizarlo.

Descargamos el plugin de Google Ads para Unity de la siguiente página (en la sección de Downloads):

https://github.com/googleads/googleads-mobile-plugins

Obtendremos un paquete de Unity llamado GoogleMobileAds.unitypackage que deberemos importar en cada proyecto en el que queramos usar AdMob.

Dentro del proyecto de Unity importamos este paquete a través del menú Assets > Import Package > Custom Package. Se crearán en la carpeta de Assets dos nuevas carpetas llamadas GoogleMobileAds y Plugins, que contienen los scripts y librerías del plugin.
googleads01

Para terminar la configuración del plugin debemos buscar la carpeta google-play-services_lib, que se encuentra en android-sdk\extras\google\google_play_services\libproject, y copiarla a nuestro proyecto Unity en Assets\Plugins\Android. Este paso habrá que hacerlo en todos los proyectos que usen el plugin y si nos olvidamos obtendremos errores de compilación o ejecución.

Registro de la aplicación en AdMob y obtención de id de anuncio

Para poder mostrar anuncios en nuestra aplicación deberemos registrarla primero en AdMob y crear un anuncio para obtener el identificador que usaremos al invocarlo desde el código.

Vamos a https://www.google.es/ads/admob/ y accedemos a nuestra cuenta de AdMob o creamos una nueva (para lo cual solo necesitamos una cuenta de Google). Desde el panel de AdMob podemos crear una nueva aplicación para monetizar. Seleccionamos la opción de crear la aplicación manualmente, le asignamos un nombre y seleccionamos android como plataforma.

Captura de pantalla 2014-10-01 02.32.36

A continuación podemos crear un anuncio, ya sea un banner o un interstitial. Para este ejemplo crearemos un banner.

Captura de pantalla 2014-10-01 02.32.56

Tras crear el anuncio obtendremos su identificador, que tendrá una apariencia similar a esta: ca-app-pub-1234567890123123/1231231231

Captura de pantalla 2014-10-01 02.33.11

Uso del plugin de Google Ads para mostrar un banner de AdMob

Una vez configurado el plugin y registrada la aplicación en AdMob, ya estamos listos para mostrar los anuncios en nuestra aplicación o juego.

Simplemente creamos un objeto vacío en la escena (Game Object > Create Empty), que será el encargado de controlar los anuncios. A continuación creamos un script de C# llamado AdsManager y lo arrastramos al objeto vacío recién creado. Editamos el script y sustituimos el código por defecto por el siguiente:

using UnityEngine;
using System.Collections;
// Librerias de Google Ads
using GoogleMobileAds;
using GoogleMobileAds.Api;

public class AdsManager : MonoBehaviour {

    public static AdsManager manager;    // Patron Singleton

    void Awake ()
    {
        if(manager == null)
        {
            // Persistente entre escenas
            DontDestroyOnLoad(gameObject);
            manager = this;
        }
        else if (manager != this)
        {
            // Solo puede haber 1
            Destroy (gameObject);
        }    
    }
    
    void Start()
    {
        // Creacion del banner
        BannerView bannerView = new BannerView("ID_BANNER_ADMOB", AdSize.Banner, AdPosition.Bottom);
        // Creacion de la peticion de anuncio
        AdRequest request = new AdRequest.Builder().Build();
        // Carga del anuncio
        bannerView.LoadAd(request);
    }
}

Como puede verse el código es muy sencillo. Sólo habrá que sustituir donde pone ID_BANNER_ADMOB por el id de anuncio obtenido en el paso anterior.

Y eso es todo! El banner de AdMob se mostrará en la aplicación…

Sin embargo, si compilamos y desplegamos la app en el dispositivo es probable que no veamos nada, y es que los anuncios de AdMob tardan en generarse desde su creación hasta una hora! ¿Cómo saber si hemos integrado correctamente AdMob entonces? Podemos usar anuncios de test.

Para activar los anuncios de test debemos obtener primero el ID de nuestro dispositivo. Para ello podemos usar el monitor localizable en las tools del SDK de android (android-sdk\tools\monitor.bat). Con el dispositivo conectado por USB y el monitor activo, arrancamos la aplicación de Unity y buscamos en el log del monitor una línea parecida a:

09-30 18:20:11.001: I/Ads(26786): Use AdRequest.Builder.addTestDevice("TU_ID_DISPOSITIVO") to get test ads on this device.

De la que podemos obtener el ID de nuestro dispositivo. Sólo tenemos entonces que modificar el código de AdsManager, cambiando la línea:

 AdRequest request = new AdRequest.Builder().Build(); 

por esta otra:

AdRequest request = new AdRequest.Builder().AddTestDevice("TU_ID_DISPOSITIVO").Build();

Si ahora compilamos y desplegamos la aplicación deberíamos ver un banner de test de AdMob. Más tarde podemos probar a deshacer esta última modificación para comprobar que se muestran anuncios reales, pero en teoría los anuncios de test sólo se mostrarán en nuestro dispositivo, mostrándose anuncios reales en los de los usuarios.

Y ahora sí, hemos acabado 😀
Banner Blog

Anuncios

15 pensamientos en “Integrando anuncios de AdMob en Unity con el plugin de Google Ads

  1. No me muestra anuncios, cuando lo corro desde unity en el log si me dice dummy pero lo paso al celular y no aparece el anuncio, que me falta hacer seguí los pasos exactamente como este tuto.

    • Hola Osiris.¿Has probado con los anuncios de test que comento en la última parte? Otra cosa que puedes hacer es ejecutar monitor.bat del sdk de android y ver si al correr el juego en el teléfono te saca algún error relacionado con los ads. Un saludo

  2. Pingback: Integración de Facebook en Unity para apps Android | El Blog de Marcos

  3. No me copila me sale este error Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
    C:\Users\Heriberto\Desktop\sdkandroid\android-sdk-windows\build-tools\21.1.0\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/Heriberto/Desktop/sdkandroid/android-sdk-windows/platforms/android-21\android.jar” -F bin/resources.ap_ –extra-packages com.google.android.gms -S “C:\Users\Heriberto\Documents\Line Esacpe\Temp\StagingArea\android-libraries\google-play-services_lib\res”

  4. hola nose que pasa a la hora de exportar mi juego me sale este tipo de error “Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. See the Console for details.
    C:\Program Files\Java\jdk1.8.0_25\bin\java.exe -Xmx1024M -Dcom.android.sdkmanager.toolsdir=”C:/Users/elvis/.android/sdk\tools” -Dfile.encoding=UTF8 -jar “C:/Program Files (x86)/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar”

    a que se debe, ya habia exportado mi juego con las funcionalidades del GOOGLE PLAY GAMES y ahora que importe el nuevo plugin de ADMOB he hice lo mismo que nos enseñaste y ese es el error que me sale a la hora de exportar, por favor que es lo que pasa??

    • Hola elvis, es probable que el error se produzca porque haya 2 librerías iguales en distintos plugins, en este caso admob y google play. Esto produce un error al tratar de compilar dos veces las mismas clases. Busca en las carpetas de los plubins y elimina las librerías repetidas a ver si así se soluciona. Un saludo.

    • Efectivamente, a diferencia de los llamados interstitials (anuncios a pantalla completa), los banners de publicidad de Admob no pueden cerrarse. Un saludo!

  5. Muy buen tutorial! Pero tengo una duda: Me gustaría que la publicidad de mi app sea de otros juegos, pero con la publicidad de admob me salen anuncios de toyota o de paginas web de ropa. Se puede cambiar eso?

    • Hola Toni! Me parece que en el panel de admob puedes desactivar y activar las categrías de anuncios que te interesa que se muestren. Échale un vistazo a ver.
      Un saludo!

  6. hola genial funciono a primera pero para hacer lo mismo que se active con un boton y solo corra un video de admod como puedo hacer?

  7. Ya sé que lo han preguntado ya, pero respecto a que el banner no puede cerrarse, ¿no existe ninguna manera de mostrarlo y ocultarlo? lo digo porque además de haber visto juegos que lo hacen, he encontrado un asset de Unity llamado “AdsManager” (como tu singleton) que se supone que deja mostrar el banner con: “AdsManager.instance.ShowBanner()” y ocultarlo con “AdsManager.instance.HideBanner” (también hay un “AdsManager.instance.DestroyBanner” que no entiendo en que se diferencia del anterior…). Decir que este plugin también trabaja con otras networks como AdColony y CharBoost.

    ¿El que no se pueda ocultar es una particularidad de AdMob?

    Gracias!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s