1

I released my app yesterday and few units were sold so far. But I figured out that the leaderboard doesn't work properly. I can only see my own score when I'm done with my game. Is there some kind of delay until the leaderboard is updated or is it a problem on my implementation? I'd really appreciate if I have my implementation checked by someone who knows how to do it properly. On a side note, I already configured my leaderboard on itunes-connect and enabled it as well. I'm not sure if GKLocalPlayer's instance method loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) is the right method to use to load the correct leaderboardID. Do I manually have to declare my leaderboard ID on Xcode somewhere with the leaderboardID I created on itunes-connect? because I find it odd that I never get to use it on the actual implementation... I want this error fixed as soon as possible and I need you guys' help. Thanks.

(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;
                NSLog(@"authenticated");
                // Get the default leaderboard identifier.
                [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) {

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

            else{
                _gameCenterEnabled = NO;
            }
        }
    };
}

- (void)reportScore:(NSNotification *) notification {
    if (_gameCenterEnabled) {
        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];
}
slow
  • 805
  • 3
  • 13
  • 27
  • Did this go away, or fix itself on its own? I'm in the same boat with the same problem, but the question is often asked and never answered! – Dave Apr 03 '17 at 16:35

0 Answers0