0

I've made 3~4 test users through itunes-connect to see if my leaderboard implementation is correctly working. So, I played my game with 2-3 different accounts that I've made on one device. But every time I log in with an account and report the score, I only see its own score on the leaderboard and it's the only participant. Is this expected or should all accounts that I've reported be on the leaderboard?

#pragma mark leaderboard 
- (void)authenticateLocalPlayer {
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController != nil) {
            [self presentViewController:viewController animated:YES completion:nil];
        }
        else{
            if ([GKLocalPlayer localPlayer].authenticated) {
                _gameCenterEnabled = YES;

                // Get the default leaderboard identifier.
                [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) {

                    if (error != nil) {
                        NSLog(@"%@", [error localizedDescription]);
                    }
                    else{
                        _leaderboardIdentifier = leaderboardIdentifier;
                    }
                }];
            }

            else{
                _gameCenterEnabled = NO;
            }
        }
    };
}


- (void)reportScore:(NSNotification *) notification {
    NSDictionary *userInfo = notification.userInfo;
    NSNumber *score = [userInfo objectForKey:@"highestScore"];
    GKScore *gkscore = [[GKScore alloc]initWithLeaderboardIdentifier:_leaderboardIdentifier];
    gkscore.value = [score integerValue];
    [GKScore reportScores:@[gkscore] withCompletionHandler:^(NSError *error) {
        if (error != nil) {
            NSLog(@"%@", [error localizedDescription]);
        }
    }];

}

- (void)showLeaderboard{
    GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc] init];
    gcViewController.gameCenterDelegate = self;

    gcViewController.viewState = GKGameCenterViewControllerStateLeaderboards;
    gcViewController.leaderboardIdentifier = _leaderboardIdentifier;

    [self presentViewController:gcViewController animated:YES completion:nil];
}

- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
    [gameCenterViewController dismissViewControllerAnimated:YES completion:nil];
}

This is my implementation of my leaderboard on my project.

chanpkr
  • 895
  • 2
  • 10
  • 21

1 Answers1

1

I answered something similar here, its basically an issue with sandbox accounts in Game Center.

Community
  • 1
  • 1
Andy Heard
  • 1,715
  • 1
  • 15
  • 25