Получение достижения игрового центра по идентификатору

У меня вопрос, связанный с достижениями Game Center. Можно ли получить название/описание достижения по его идентификатору? Я пытаюсь избежать жесткого кодирования каждого идентификатора с соответствующим именем, так есть ли решение, которое может получить имя? спасибо, Сами


person Sami    schedule 04.08.2011    source источник


Ответы (1)


Конечно, именно поэтому у вас есть поддержка локализации достижений (а также списков лидеров) в iTunes Connect.

Тем не менее, нет возможности запросить в Game Center локализованную информацию только для одного достижения на основе его идентификатора. Вместо этого вы запрашиваете информацию обо всех достижениях, которая дает вам массив объектов GKAchievementDescription, которые лучше всего поместить в словарь, где ключи являются идентификаторами достижений, а затем вы выбираете правильный объект GKAchievementDescription из этого словаря.

NSMutableDictionary *achievementDescriptions = [[NSMutableDictionary alloc] init];
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray *descriptions, NSError *error) {
    if (error != nil) {
        NSLog(@"Error getting achievement descriptions: %@", error);
    }
    for (GKAchievementDescription *achievementDescription in descriptions) {
        [achievementDescriptions setObject:achievementDescription forKey:achievementDescription.identifier];
    }
}];

А затем, когда вы хотите отобразить информацию о каком-то достижении:

GKAchievementDescription *achievementDescription = [achievementDescriptions objectForKey:currentAchievement.identifier];

Этот объект дает вам локализованный заголовок, описание того, когда он достигнут и не достигнут, а также количество баллов, которое он присуждает, и изображение, которое вы указали в iTunes Connect.

person Filip Radelic    schedule 04.08.2011
comment
Именно то, что мне нужно. Большое спасибо - person Sami; 05.08.2011
comment
Невероятно удобно; Спасибо! По сути, это исправляет то, что я считаю вопиющим упущением в SDK... - person iisystems; 23.07.2012