Google Play Game Services (Android)


Marcadores y puntuaciones en tiempo real, logros y premios, botón +1, mensajería en tiempo real entre jugadores y mucho más. Eso es lo que ofrece el nuevo servicio de Google a los desarrolladores.

Requisitos previos

  1. Necesitas un dispositivo con la versión 2.2 de Android o superior (API 8) y con Google Play para probar (así que alguna ROM puede que no vaya). Si no también se puede probar con el simulador, creando una instancia del AVD del 4.2.2 o superior.
  2. Si usáis eclipse (como el 99% de todos), abrís Android SDK Manager y en la carpeta Extras, marcáis "Google Play Services". Actualizar además a la última API (mínimo la 17) y las herramientas es recomendable. Instaláis los paquetes.
  3. Una vez instalados y desde eclipse, en el mismo workspace que vuestro juego, importáis el proyecto que está en la carpeta <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ (<android-sdk> es donde hayáis instalado el SDK). 
  4. En las propiedades del proyecto de vuestro juego (clic-derecho en la carpeta desde Eclipse), os vais a Android y añadís el proyecto de google-play-services-lib como referencia.
  5. Además seleccionáis el Target de vuestro proyecto con la última versión que tengáis de las Google APIs (mínimo la 17). 

Dentro de Eclipse

  1. En el archivo de Proguard, (proguard-project.txt se puede abrir desde Eclipse), añadís  
  2. -keep class * extends java.util.ListResourceBundle { protected Object[][] getContents();}
    
  3. Os descargáis de GitHub https://github.com/playgameservices/android-samples/tree/master/BaseGameUtils y añadís el contenido de la carpeta src a vuestro proyecto. Es licencia Apache y funciona muy bien para empezar. Hay sólo un par de clases y es muy fácil de usar, de hecho la única que usaréis será BaseGameActivity
  4. Evidentemente vuestra actividad principal, o desde la que queráis hacer todo el tema social (marcadores, logros, etc), debe heredar de BaseGameActivity.
  5. En el Manifest, dentro de la etiqueta application añadís el siguiente código:
  6. <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
  7. ¡Error de compilación! No os preocupéis , necesitamos el app_id, y para ello nos vamos a la consola de desarrollador 

Consola de desarrollador

  1. Lo primero que necesitáis es subir una versión del juego, si ya está publicado ya la tenéis y si no firmad una versión y la subís a alpha.
  2. En la sección "Servicios de juegos" añadís el juego, esto es un poco engañoso, puesto que no se refiere al APK, si no a una "entidad" en la que podréis crear marcadores, logros, gestionar mensajería y enlazar las aplicaciones, de forma que podéis tener varias versiones del APK (de pago, gratis con publicidad) o en diferentes plataformas (en iOS o Web) y todas compartiendo los mismos marcadores y logros. Podéis crear algún marcador y añadir algún logro para probar después.


  3. Enlazáis el APK que habéis subido previamente.


  4. El identificador que necesitamos (app_id) es un código numérico que aparece justo al lado del nombre del juego, en el título. Lo copiamos y creamos un archivo XML en la carpeta de res/values donde lo añadimos: <string name="app_id">XXXXXXXX</string>
  5. En la sección de Testing, debéis añadir al menos una cuenta de prueba, para poder probar los servicios antes de publicar la app. Deben ser cuentas con perfiles Google+ (p.ej. de GMail).

Consola API de Google

  1. En la "otra" consola (https://code.google.com/apis/console) entráis en la sección API Access y dentro en hacéis clic en "Create another client ID".


  2. Seleccionáis Installed application, Android, introducís el nombre del paquete, y deshabilitáis la opción Deep Linking. Todavía no le dáis a crear. 
  3. El certificado SHA1 lo podéis obtener con la herramienta keytools. En un Mac/Ubuntu estará en el Path por lo que no habrá problema y en un Windows la encontraréis dentro del JDK. En un terminal introducís: keytool -list -v -keystore vuestro_archivo_de_firmas.key Donde vuestro_archivo_de_firmas.key es evidentemente el que utilizáis para firmar los APK. Introducís en el formulario el código obtenido y ya podéis crear. Si había otro identificador de cliente lo podéis borrar. 

De nuevo en Eclipse

  1. Google Play Services sólo funciona en aplicaciones firmadas, por lo que debéis firmar los APK antes de testearlos. 
  2. Es fácil comprobar si Google Play Services está disponible, podéis usar el método estático: GooglePlayServicesUtil.isGooglePlayServicesAvailable(Context context)
  3. Y ya sólo consiste en curiosear dentro de las clases del proyecto de GitHub que hemos importado previamente. Según que queráis hacer podéis habilitar un cliente u otro (p.ej. CLIENT_GAMES para marcadores y logros, CLIENT_PLUS para el botón +1) y con los métodos getGamesClient y getPlusClient podéis acceder a las instancias desde las que podréis realizar todas las operaciones.
Podéis probar el resultado con nuestro último juego: ¿Dónde está la mosca? / Where's That Fly?