17/6/14

[Tutorial] Cómo poner publicidad con AdMob en tu aplicación (libGDX)

Buenas gente! En la entrada anterior vimos distintos modelos de negocio para conseguir monetizar nuestras aplicaciones. En esta entrada nos centraremos en el modelo de aplicación gratuita con publicidad.

Para ello nos crearemos una cuenta en la plataforma Google AdMob, que, al igual que Google Adwords y Google Adsense en el mundo web, actúa de intermediario para poder poner publicidad en tus aplicaciones y está disponible para casi todas las plataformas móviles, como Android, iPhone/iPad y Windows Phone.

Crear una cuenta en AdMob


Lo primero de todo será crearnos una cuenta en AdMod, para ello nos vamos a su página web.

Una vez dentro nos registramos usando una cuenta de gmail. Deberemos dar algunos de nuestros datos como país donde vivimos, nombre completo, etc.

Una vez estemos registrados, nos vamos al menú "Monetizar" y añadimos el nombre de nuestra aplicación.

Hacemos click en añadir nuevo bloque de anuncios y le damos un nombre y un tipo (veremos más adelante los tipos que hay).

Tendrás que crear un nuevo bloque por cada espacio de anuncios que quieras poner en la aplicación (banner superior, publicidad de pantalla completa, etc.)

Cada bloque tendrá su propio id que usaremos más adelante.

Importando librerías en eclipse


Necesitaremos descargar un par de librerías para poder usar la API de google y sus anuncios. Para ello nos vamos a nuestro ADT y vamos al menú "Window -> Android SDK Manager" una vez dentro buscamos en la API 17 o superior el paquete Google APIs y lo señalamos para instalar.



Ahora bajamos en la lista hasta llegar a Extra e instalamos el paquete Google Play Services:



Una vez instalados ambos, seleccionamos File-> Import-> Android-> Existing Android Code into Workspace

Nos situamos en la carpeta donde instalamos nuestro ADT y SDK y desde ahí importamos:

/extras/google/google_play_services/libproject/google-play-services_lib/

El siguiente paso es seleccionar nuestro proyecto android, hacemos click derecho en él y vamos a sus preferencias.

En el menú de Android veremos en la parte de abajo para importar librerias, hacemos click en el botón de añadir y añadimosla librería google-play-services_lib que acabamos de importar a eclipse.

Con esto ya tendremos nuestro proyecto listo para usar la API de google.

Modificando nuestro AndroidManifest.xml


Lo primero que hay que cambiar es nuestro fichero .xml para añadir un activity nuevo para el anuncio y añadir los permisos de internet y comprobación de red necesarios para que puedan verse los anuncios. El fichero quedará parecido al siguiente:



Modificando nuestra clase AndroidLauncher.java


Deberemos modificar la única clase que tenemos en el paquete android y añadirle los anuncios que queramos. Quedará parecido a esto:



En la línea 36, en vez de ID_AD tendrás que poner el Id del bloque de anuncio que ponga en la página de AdMob y que creaste antes.

En la línea 37 indicas que tipo de anuncio será. Puede ser un banner, como en este caso, pantalla completa, etc. Puedes ver los tipos disponibles aquí.

Las líneas 40 y 41 solo son necesarias cuando estás haciendo pruebas, para indicar el Id del dispositivo en el que vas a hacer las pruebas.

Esto es necesario ya que si realizas muchas pruebas AdMob podría detectar que estás haciendo clicks "fraudulentos" y llegar a bloquearte la cuenta. Para ello le indicas que estas haciendo pruebas en ese dispositivo.

En la línea 52 indicas donde quieres que se coloque el anuncio dentro de la pantalla. En este caso está puesto an la parte inferior de la pantalla.

Modificando nuestra clase principal


Primero deberemos crear una interfaz dentro del proyecto principal de la aplicación:



Después deberemos crear una variable de esa interfaz dentro de nuestra clase principal de la aplicación:



Tras esto solo nos quedará activar el mostrar los anuncios:



Tras esto ya podremos ejecutar nuestra aplicación en un dispositivo android y se verá la publicidad.

Notas

  • Esta API de google solo funciona para versiones de Android iguales o superiores a la 2.3
  • Deberás crear un AdView por cada uno de los bloques de anuncios que quieras crear.
  • Las primeras veces que intentes ver el anuncio o cuando pasen 24 horas sin que nadie lo vea puede que el anuncio tarde en cargar. Deja la aplicación abierta durante un par de minutos y con el tiempo cargará el anuncio.

Referencias

9 comentarios:

  1. Muchas gracias por el tutorial, anteriormente tuve fallos con esto y puse un comentario por si me sabias ayudar, pero el fallo era culpa mía ^^"

    en fin, sigue así, me encantan tus tutoriales.

    ResponderEliminar
    Respuestas
    1. Me alegro de que pudieras solucionarlo =D muchas veces una tontería nos hace perder horas y horas estúpidamente xD
      Animo con la programación!

      Eliminar
  2. tengo un problema, solo me sale un rectangulo gris :S

    ResponderEliminar
    Respuestas
    1. Esto suele pasar al principio o cuando pasan mas de 24 horas sin que nadie vea el anuncio.

      Deja la aplicación un rato abierta y en un par de minutos verás ya el anuncio.

      Eliminar
  3. Buenas, yo estoy utilizando el basegameutils y parece q me da conflicto pq no me reproduce el banner, ya tengo creada un constructor en mi clase principal, puede ser que por eso me de problemas?

    ResponderEliminar
  4. Buen tutorial.

    Cuando uno que esplique como implementar in-app billing para que el usuario compre quitar los anuncios desde la misma aplicación.

    saludos

    ResponderEliminar
  5. Hola, osea que el rectángulo gris ¿significa que todo fue correcto?

    ResponderEliminar
  6. HOLA, ES UN GUSTO SABER QUE HAY GENTE CON GANAS DE ENSEÑAR LO QUE SABE, SE TE AGRADECE, ahora mi consulta es, sera posible incorporar este mismo tipo de negocio a una aplicación que sea java SE, resulta que tengo una aplicación que no me gustaría cobrar directamente con el cliente, pero me gustaría ponerle publicidad para que san Google Ad, me pague a mi, mi aplicacion es desarrollada con netbeans y en el entorno java SE, gracias otra vez.

    ResponderEliminar
  7. Hola estoy usando libgdx y me funciona con el id del test, pero con el mio no sucede nada, hablo del id del bloque google ads que podría hacer en este caso

    ResponderEliminar