Вы можете сделать это, но вы должны сами управлять этим.GameKit ориентирован на одиночную игру, а не на совокупную оценку.Обратите внимание, что игрок не будет появляться более одного раза в таблице лидеров, потому что GKLeaderboard сообщит только о самом высоком балле за указанный вами промежуток времени.
Отслеживание совокупного счета не так сложно.Вот код, который я использую для этого.Получите GKLeaderboard с идентификатором, который отслеживает счет, а затем получите высокий балл для локального пользователя.Затем добавьте новый итог к текущему рекорду и затем сообщите новый итог.
- (void)updateLeaderboardWithID:(NSString *)identifier score:(int64_t)score {
GKLeaderboard* leaderBoard= [[GKLeaderboard alloc] init];
leaderBoard.category = identifier;
leaderBoard.timeScope = GKLeaderboardTimeScopeAllTime;
leaderBoard.range = NSMakeRange(1, 1);
[leaderBoard loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
GKScore *localScore = leaderBoard.localPlayerScore;
int64_t newValue = localScore.value + score;
localScore = [[GKScore alloc] initWithCategory:identifier];
localScore.value = newValue;
[localScore reportScoreWithCompletionHandler:^(NSError *error){
// error handling goes here
}];
);
}];
}