What should be used instead of the obsolete GKLeaderboardViewController in iOS7?

my application for iOS 7 has been updated, and in the game center there are several things outdated, such as downloading and rejecting the leaderboard and achievements, how can I fix them, says that GKLeaderboardViewController is out of date

- (IBAction)LeaderBoardsButton:(id)sender { GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init]; if (leaderboardController != NULL) { leaderboardController.leaderboardDelegate = self; [self presentViewController:leaderboardController animated:YES completion:NULL]; } { AudioServicesPlaySystemSound(SoundID); } } - (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController { [self dismissViewControllerAnimated:YES completion:NULL]; { AudioServicesPlaySystemSound(SoundID2); } } - (IBAction)AchievementsButton:(id)sender { GKAchievementViewController *achievements = [[GKAchievementViewController alloc] init]; if (achievements != nil) { achievements.achievementDelegate = self; [self presentViewController:achievements animated:YES completion:NULL]; } { AudioServicesPlaySystemSound(SoundID); } } - (void)achievementViewControllerDidFinish:(GKAchievementViewController *)viewController { [self dismissViewControllerAnimated:YES completion:NULL]; { AudioServicesPlaySystemSound(SoundID2); } } 

I report an account like this

 - (IBAction)ShareScore:(id)sender { [self.gameCenterManager reportScore: counter forCategory: self.currentLeaderBoard]; GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init]; if (leaderboardController != NULL) { leaderboardController.category = self.currentLeaderBoard; leaderboardController.timeScope = GKLeaderboardTimeScopeToday; leaderboardController.leaderboardDelegate = self; [self presentViewController:leaderboardController animated:YES completion:NULL]; } { AudioServicesPlaySystemSound(SoundID); } } 
+4
objective-c ios7 xcode5
source share
1 answer

iOS 7 integrates controllers of leaders, achievements, etc. to the GKGameCenterViewController class. You use the viewState parameter to control the view you want to display.

You want to do something similar to submit / reject 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, to represent 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 will 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); } }]; } } 
+23
source share

All Articles