What should I use instead of deprecated GKLeaderboardViewController in iOS7?

前端 未结 1 2056
长情又很酷
长情又很酷 2020-12-29 16:31

ive updated my app for IOS 7 and game center has a few things deprecated such as loading and dismissing the leaderboard and achievements how can i fix them it says GKLeaderb

相关标签:
1条回答
  • 2020-12-29 17:06

    iOS 7 combines the leaderboards, achievements, etc. controllers together into the GKGameCenterViewController class. You use the viewState parameter to control which view you want displayed.

    You'll want to do something like this to present/dismiss the leaderboards:

    - (void) presentLeaderboards {
        GKGameCenterViewController* gameCenterController = [[GKGameCenterViewController alloc] init];
        gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
        gameCenterController.gameCenterDelegate = self;
        [self presentViewController:gameCenterController animated:YES completion:nil];
    }
    
    - (void) gameCenterViewControllerDidFinish:(GKGameCenterViewController*) gameCenterViewController {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    

    Similarly, for presenting achievements, you can do this:

    - (void) presentAchievements {
        GKGameCenterViewController* gameCenterController = [[GKGameCenterViewController alloc] init];
        gameCenterController.viewState = GKGameCenterViewControllerStateAchievements;
        gameCenterController.gameCenterDelegate = self;
        [self presentViewController:gameCenterController animated:YES completion:nil];
    }
    

    Reporting score would look something like this:

    - (void) reportHighScore:(NSInteger) highScore forLeaderboardId:(NSString*) leaderboardId {
        if ([GKLocalPlayer localPlayer].isAuthenticated) {
            GKScore* score = [[GKScore alloc] initWithLeaderboardIdentifier:leaderboardId];
            score.value = highScore;
            [GKScore reportScores:@[score] withCompletionHandler:^(NSError *error) {
                if (error) {
                    NSLog(@"error: %@", error);
                }
            }];
        }
    }
    
    0 讨论(0)
提交回复
热议问题