Las 5 mejores puntuaciones de google leaderboard

Mi requisito es obtener las mejores 5 puntuaciones de leaderboard y mostrarlo en mi aplicación.

Hay un método loadTopScores pero muestra las puntuaciones en su propia interfaz de usuario supongo.

mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() { public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1, LeaderboardScoreBuffer arg2) { // TODO Auto-generated method stub } }, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME , LeaderboardVariant.COLLECTION_PUBLIC, 5, true); 

Entonces, ¿hay alguna manera de obtener datos individuales como nombre y puntuación ..?

Nombre 1: Nombre del máximo goleador 1 puntuación 1: puntaje del máximo goleador 1

Nombre 2: Nombre del máximo goleador 2 puntuación 2: puntaje del máximo goleador 2

……y así

Sólo quiero la cadena de nombre y la partitura entero para que pueda utilizarlo en mi juego.

Por favor, sugerirme algunas ideas

Usted está en el camino correcto en su ejemplo, sólo tiene que extraer la información una vez que se carga. Es bastante confuso para conseguir que funcione, pero voy a señalar a esta respuesta de la mía, que muestra cómo hacerlo para los logros – hacerlo para las tablas de clasificación funciona de la misma manera, excepto que va a utilizar las interfaces de leaderboard en lugar de los utilizados para Logros.

Básicamente, accederá a arg2 para obtener los datos, y debería verse algo así:

 mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() { public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1, LeaderboardScoreBuffer arg2) { // iterate through the list of returned scores for the leaderboard int size = arg2.getCount(); for ( int i = 0; i < size; i++ ) { LeaderboardScore lbs = arg2.get( i ); // access the leaderboard data int rank = i + 1; // Rank/Position (#1..#2...#n) String name = lbs.getScoreHolderDisplayName(); String scoreStr = lbs.getDisplayScore(); long score = lbs.getRawScore(); // now display or cache these values, or do whatever with them :) } arg2.close(); arg1.close(); } }, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5, true); 

Realmente no he probado esta implementación, pero debería funcionar (o al menos mostrarte lo suficiente para poder corregir los errores que pudiera haber cometido).

Sólo recuerde que esto se hará de manera asíncrona, por lo que el contenido del método no se ejecutará de inmediato, sino más bien una vez que las puntuaciones se han cargado.

He aquí cómo lo he conseguido.

 PendingResult<Leaderboards.LoadScoresResult> topScores = Games.Leaderboards.loadTopScores(getApiClient(),LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 1, true); topScores.setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() { @Override public void onResult(LoadScoresResult scoreResults) { if(scoreResults != null) { if (scoreResults.getStatus().getStatusCode() == GamesStatusCodes.STATUS_OK) { scoreStringBuilder = new StringBuilder(); LeaderboardScoreBuffer scoreBuffer = scoreResults.getScores(); Iterator<LeaderboardScore> it = scoreBuffer.iterator(); while(it.hasNext()){ LeaderboardScore temp = it.next(); Log.d("PlayGames", "player"+temp.getScoreHolderDisplayName()+" id:"+temp.getRawScore() + " Rank: "+temp.getRank()); scoreStringBuilder.append("|"+temp.getScoreHolderDisplayName()+"*"+temp.getRawScore()); } UnityPlayer.UnitySendMessage(handlerName, "onGetScoreSucceededEventListener", ""); Log.d("PlayGames", "Call Sent for getHighScorewithPlayerNameSuccess ::: "+handlerName); } } }}); 

Puede usarlo como desee. Creé una cadena y la devolví a Unity y luego la analizé. Sin embargo, este código funciona con los últimos servicios de Google Play.

Gracias

Mi solución que funcionó es la siguiente que es para los últimos servicios de juego.

  Games.Leaderboards.loadTopScores(mGamesClint,LEADERBOARD_ID, LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5).setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() { public void onResult(LoadScoresResult arg0) { // TODO Auto-generated method stub int size = arg0.getScores().getCount(); for ( int i = 0; i < 3; i++ ) { LeaderboardScore lbs = arg0.getScores().get(i); String name = lbs.getScoreHolderDisplayName(); String score = lbs.getDisplayScore(); Uri urlimage = lbs.getScoreHolderHiResImageUri(); } } 

Usted puede obtener todos los datos de los usuarios de tablas de clasificación aquí, incluyendo la imagen de alta resolución es decir. foto de perfil. Espero que tengas la idea aquí.

  • ¿Cómo autorizo ​​cada solicitud de API que viene del cliente (nativo)?
  • ¿Cómo acceder al Calendario del usuario en el dispositivo Android?
  • Cómo obtener el lugar actual mediante Google Place API
  • Identidad de sitios cruzados de Google y de Google
  • API de ubicación de Google: solicita actualizaciones de ubicación con intención pendiente?
  • No se puede encontrar la imagen del sistema en Emulator en Android Studio con API de Google
  • ¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?
  • Para Android Map api v2 Descripción referencias biblioteca no existente google-play-services_lib \ bin \ google-play-services_lib.jar
  • ¿Es posible obtener distancia entre la ubicación actual y una calle, avenida o zona?
  • Appwidget se congela y se niega a actualizar más: ignora updateAppWidget
  • Cómo compartir texto e imagen en Google Plus (G +) de android sin utilizar Intent?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.