Game Centerを利用してランキングを実装したい。
だから、私はこのように実装します。
-(void)authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *vc,NSError *err){
[self setLastError:err];
if ([CCDirector sharedDirector].isPaused){
[[CCDirector sharedDirector] resume];
}
if (localPlayer.authenticated){
_gameCenterFeaturesEnabled = YES;
// get localplayer's score.
GKLeaderboard *board = [[GKLeaderboard alloc] init];
// make a query
board.timeScope = GKLeaderboardTimeScopeAllTime;
// I want to get all player's score.
board.playerScope = GKLeaderboardTimeScopeToday;
// set my game category.
board.category = @"com.nobinobiru.shooting";
// I want to show top 3 score data.
board.range = NSMakeRange(1, 3);
[board loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
NSString *s = [NSString stringWithFormat:@"%lld",board.localPlayerScore.value];
[ud setObject:[NSString stringWithFormat:@"%@",s] forKey:@"bestScore"];
if (scores){
// I want to 3 items but it returned only 1 item.
NSLog(@"score is %@",scores);
}
}];
}else if (vc){
[[CCDirector sharedDirector] pause];
[self presentViewController:vc];
}
};
}
次に、3 つのサンドボックスのユーザー アカウントを作成し、テストします。ただし、常に現在のユーザーの最高スコアのみが表示されます。
3 つのサンドボックスのデータを表示したい。
どうしてそんなことになったのかわからない。私のコードはサンドボックス環境でなくてもうまく動作しますか? 何か考えはありますか?
前もって感謝します。