У меня вопрос, связанный с достижениями Game Center. Можно ли получить название/описание достижения по его идентификатору? Я пытаюсь избежать жесткого кодирования каждого идентификатора с соответствующим именем, так есть ли решение, которое может получить имя? спасибо, Сами
Получение достижения игрового центра по идентификатору
Ответы (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.