En esta guía, se muestra cómo usar las APIs de logros en una aplicación para Android para desbloquear y mostrar logros en el juego. Se pueden encontrar las APIs en los paquetes com.google.android.gms.games
y com.google.android.gms.games.achievements
.
Antes de comenzar
Si aún no lo hiciste, puede resultarte útil consultar los conceptos de logros en los juegos.
Antes de comenzar a programar con la API de logros, haz lo siguiente:
- Sigue las instrucciones de instalación y configuración de tu app para su uso Los Servicios de juego de Google Play Guía para configurar el SDK de los Servicios de Google Play.
- Define los logros que quieres que el juego desbloquee o muestre siguiendo las instrucciones de la guía de Google Play Console.
- Descarga y revisa las muestras de código de logros en la página de ejemplos de Android.
- Familiarízate con las recomendaciones que se describen en la lista de tareas de calidad.
Cómo obtener un cliente de logros
Para comenzar a usar la API de logros, primero el juego debe obtener una
Objeto AchievementsClient
. Puedes hacerlo llamando al
Games.getAchievementClient()
y pasa la actividad y el
GoogleSignInAccount
para el reproductor actual. Para aprender a recuperar el
la información de la cuenta del jugador, consulta Acceso a juegos para Android.
Cómo desbloquear logros
Para desbloquear un logro, llama al método AchievementsClient.unlock()
y
pasa el ID del logro.
En el siguiente fragmento de código, se muestra cómo tu app puede desbloquear logros:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .unlock(getString(R.string.my_achievement_id));
Si el logro es de tipo incremental (es decir, se requieren varios pasos para
desbloquearla), llama a AchievementsClient.increment()
en su lugar.
En el siguiente fragmento de código, se muestra cómo tu app puede aumentar el logro del jugador:
Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(getString(R.string.my_achievement_id), 1);
No es necesario que escribas código adicional para desbloquear el logro. Servicios de juego de Google Play desbloquea automáticamente el logro una vez que alcanza la cantidad de pasos requeridos.
Una práctica recomendada consiste en definir el ID de los logros en el archivo strings.xml
, de modo que el juego pueda hacer referencia a los logros por ID de recurso. Cuando realices llamadas para actualizar y cargar
asegúrate de seguir también estas prácticas recomendadas
superar la cuota de la API.
Cómo mostrar los logros
Para mostrar los logros de un jugador, llama a AchievementsClient.getAchievementsIntent()
.
y obtén un objeto Intent
para crear
la interfaz de usuario de logros predeterminada. Para que pueda abrir la IU, el juego podrá llamar a startActivityForResult
.
En el siguiente fragmento de código, se muestra cómo tu app puede mostrar la interfaz de usuario predeterminada del logro.
En el fragmento, RC_ACHIEVEMENT_UI
es un número entero arbitrario que el juego utiliza como código de solicitud.
private static final int RC_ACHIEVEMENT_UI = 9003; private void showAchievements() { Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .getAchievementsIntent() .addOnSuccessListener(new OnSuccessListener<Intent>() { @Override public void onSuccess(Intent intent) { startActivityForResult(intent, RC_ACHIEVEMENT_UI); } }); }
A continuación, se muestra un ejemplo de la IU predeterminada de logros.