top of page

Admob y Microsoft ads en Unity

  • caldofran
  • Apr 3, 2017
  • 4 min read

Hoy vamos a ver cómo poner anuncios en nuestra app de Unity de una manera rápida y sencilla con los proveedores de anuncios de Google (para Android e iOS) y Microsoft (para Windows Store).

En las últimas versiones los chicos de Unity ya han visto negocio y han lanzado su propio sistema de advertising, si quieres ver cómo funciona, que te lo cuenten ellos mismos: https://unity3d.com/es/services/ads

Yo me voy a centrar en los otros dos, uno mucho más grande que el otro, Microsoft a este respecto sigue siendo residual, ya que su tienda no acaba de arrancar del todo y por lo tanto su sistema de advertising tampoco. Dejo por otro día una pequeña disertación sobre la monetización hoy en día, que da para mucho texto. Hoy nos centramos en la parte más técnica con Unity.

Requisitos:

A tener en cuenta:

  • Los anuncios de admob y Microsoft no se muestran en el editor, deberéis disponer de un dispositivo con Android o Windows para poder probarlos.

  • El código de este ejemplo, está mezclado, parte será para Admob y parte para Windows, he utilizado predirectivas para ello: https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

  • He utilizado por simplicidad, la antigua UI de Unity, no hagáis esto en casa niños, que da mal rendimiento...

  • Los anuncios para Windows requieren realizar modificaciones en la solución que resulta de exportar el proyecto a una App Universal, el código "Unity" solo es una llamada a los métodos equivalentes de dicha solución.

Manos a la obra

Para esta demo, creamos un nuevo proyecto e importamos el paquete de admob que hemos descargado antes: Assets - Import packages - Custom packages. Importamos todos los assets que incluye.

Revisa que no te haya incluido las librerías GoogleAds.dll y GoogleAds.XML, estos dan conflictos con Windows Store, borra ambos ficheros si están en la carpeta Plugins.

Creamos un nuevo gameobject vacío en nuestra Jerarquia de objetos y le añadimos tres scripts diferentes: AppScript, Ads e Interstitial. El código que contendrán (las explicaciones en el código) es el siguiente:

Ads:

Para crear un anuncio se utiliza la instrucción "AdRequest request = new AdRequest.Builder().AddTestDevice(AdRequest.TestDeviceSimulator).AddTestDevice("ID_DE_TU_DISPOSITIVO").Build();" Introduce el ID de tu dispositivo para poder testearlo, si no tendrás que crearte un anuncio en admob y compilarlo con una key, como si fueras a publicarlo en el play store. Si no sabes cómo sacar el id de tu dispositivo, os dejo este link de EA (los del FIFA): https://help.ea.com/es-es/help/mobile/what-is-an-android-device-id-and-how-do-i-locate-it/

Interstitial:

AppScript:

WinStatics (Esta clase es para la parte de Windows Store y no requiere asociarla a ningun GameObject, ya que es estática):

Compila el proyecto y genera un .apk, al instalarlo en un emulador o dispositivo, veras los tres botones que hemos añadido, y por supuesto los anuncios.

Windows Universal App

Para conseguir compilar para Windows Universal 10, necesitaremos hacer un par de modificaciones al código fuente de Google, si, has leído bien, si no no funciona, intuyo que se genera un conflicto con librerías nativas de Windows pero no he invertido tiempo en saber el por qué. Son estos dos ficheros:

GoogleMobileAds\Api\AdLoader.cs: Sustituir la línea que indica:

this.AdUnitId = string.Copy(builder.AdUnitId);

Por esta otra:

this.AdUnitId = String.Concat(builder.AdUnitId, "");

GoogleMobileAds\Common\DummyClient.cs: En este fichero hay que comentar todas las lineas que tienen Debug.Log. En realidad es por la propiedad MethodBase.GetCurrentMethod().Name, que no existe en el subconjunto de Windows store.

Ahora si ya estamos en disposición de hacer el port a una Windows store app (que requiere generar otra solución de visual studio diferente a la de Unity), pero antes acuérdate de instalar el Microsoft Store Services SDK del que hemos hablado en los prerrequisitos.

Selecciona en las "Build Settings" Windows 10 y XAML y construye el proyecto seleccionando una carpeta vacia. Después de este paso tendremos ya una solución creada para poder generar nuestra Universal App.

Una vez abierta la solución (Es posible que veas errores si abres los .cs, pero no te preocupes, compilará) tendremos que realizar los siguientes pasos:

  • Habilitamos la conexión de la app a internet: Botón derecho en el proyecto "Universal Windows" - Propiedades, y en la ventana que se abre, dentro de la pestaña "Application" - Package Manifest - Pestaña capabilities - Activar casilla "Internet (Client)".

  • Lanzamos el proyecto: Selecciona Debug, x64 y local machine y dale al play (F5), los errores desaparecen y la app se lanza en tu máquina, de momento no se muestra anuncios, lógico, no es un Android. Ahora hacemos los apaños necesarios.

  • Añadimos la referencia a los ads de Microsoft: Botón derecho en el proyecto - Add References - Universal Windows - Extensions - selecciona "Microsoft Advertising SDK for XAML" - OK.

  • Modificamos el fichero MainPage.xaml (el ApplicationId y el AdUnitId son los de testing de MS, puedes verlos aquí: https://msdn.microsoft.com/en-us/library/mt125365.aspx):

  • En este punto podemos lanzar la app y comprobar que el anuncio ya se ve, pero no reacciona a los botones.

  • Modificamos el fichero MainPage.xaml.cs:

Declaramos una instancia de la clase InterstitialAd (nos pedirá añadir un using "Microsoft.Advertising.WinRT.UI"):

Nos subscribimos a los eventos de la clase WinStatics (añadir al final del constructor de MainPage()):

Ya tenemos los anuncios, y podemos jugar con ellos, en el ejemplo, el anuncio interstitial es de video pero puede cambiarse a imagen cambiando la instrucción myInterstitialAd.RequestAd(AdType.Display, myAppId, myAdUnitId);

Tanto la parte de Android como la de Windows Store son bastante versátiles y pueden manejarse a placer, mostrar o no anuncios en función de si hay datos o si tenemos un móvil, ajustar el tamaño del anuncio, dar recompensas por visualizar anuncios...

Cualquier duda ya sabéis donde estoy.

 
 
 

Commentaires


bottom of page