Cómo get el marcador de forma de puntuación más alta del jugador autenticado (Game Center)

Necesito recuperar la puntuación enviada del jugador autenticado desde Game Center. Utilizo este código para get el puntaje, pero solo obtiene el puntaje más alto (el mejor puntaje de la sorting no es el puntaje del jugador especificado). ¿Cómo puedo recuperar el puntaje del jugador autenticado?

- (void) retrievePlayersScore { GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init]; if (leaderboardRequest != nil) { leaderboardRequest.playerScope = GKLeaderboardPlayerScopeGlobal; leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime; leaderboardRequest.range = NSMakeRange(1,1); [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) { if (error != nil) { // handle the error. if (scores != nil) } if (scores != nil){ // process the score information. CCLOG(@"My Score: %d", ((GKScore*)[scores objectAtIndex:0]).value); } }]; } } 

Puede utilizar el código siguiente:

 GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init]; leaderboardRequest.identifier = _leaderboardIdentifier; if (leaderboardRequest != nil) { [leaderboardRequest loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error){ if (error != nil) { //Handle error } else{ [delegate onLocalPlayerScoreReceived:leaderboardRequest.localPlayerScore]; } }]; } 

Solo tienes que tocar loadScoresWithCompletionHandler para un GKLeaderboard dado, luego automáticamente board.localPlayerScore se completará para ese tablero.

Así por ejemplo,

 - (void) getLoadLeaderboardPositions { [GKLeaderboard loadLeaderboardsWithCompletionHandler:^(NSArray *leaderboards, NSError *nsError) { if( nsError != nil ) { error( nsError, "get leaderboard score" ) ; return ; } for( GKLeaderboard* board in leaderboards ) { // fetch score for minimum amt of data, b/c must call `loadScore..` to get MY score. board.playerScope = GKLeaderboardPlayerScopeFriendsOnly ; board.timeScope = GKLeaderboardTimeScopeAllTime ; NSRange range = {.location = 1, .length = 1}; board.range = range ; [board loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) { printf( "YOUR SCORE ON BOARD %s WAS %lld\n", [board.title UTF8String], board.localPlayerScore.value ) ; }] ; } }] ; } 

También puede intentar iniciar la tabla de líderes utilizando una matriz de id (s) de jugador para networkingucir la cantidad de jugadores:

 GKLeaderboard *board = [[[GKLeaderboard alloc] initWithPlayerIDs:[NSArray arrayWithObject:myGCPlayerID]] autorelease];