Достижение Game Center разблокируется несколько раз

Я установил достижение за прохождение первого уровня моей игры, и оно работает, но когда я переигрываю уровень и прохожу его, оно снова показывает баннер с уведомлением, как я могу предотвратить это?


person matt saravitz    schedule 01.08.2012    source источник
comment
Взгляните на этот вопрос - похоже, вы не проверяете, разблокированы ли достижения.   -  person thegrinner    schedule 02.08.2012


Ответы (2)


Используйте этот метод, чтобы отправить достижение:

-(void) reportAchievementWithID:(NSString*) achievementID {

    [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {

        if(error) NSLog(@"error reporting ach");

        for (GKAchievement *ach in achievements) {
            if([ach.identifier isEqualToString:achievementID]) { //already submitted
                return ;
            }
        }

        GKAchievement *achievementToSend = [[GKAchievement alloc] initWithIdentifier:achievementID];
        achievementToSend.percentComplete = 100;
        achievementToSend.showsCompletionBanner = YES;
        [achievementToSend reportAchievementWithCompletionHandler:NULL];

    }];

}
person Kaan Dedeoglu    schedule 05.08.2012
comment
Сэр, вы спасли мой день - person alper_k; 04.09.2013

Сохраните, что пользователь прошел уровень на NSUserDefaults, затем когда пользователь пройдет уровень, проверьте NSUserDefaults на наличие вашего ключа, если он есть то не делайте код достижения для Game Center.

person WhoaItsAFactorial    schedule 01.08.2012
comment
Это работает до некоторой степени. Я обнаружил, что если я выполняю достижение, а затем выхожу из игрового центра и вхожу в учетную запись, для которой не выполнено достижение, это делает невозможным получение нового игрока :( - person matt saravitz; 02.08.2012
comment
вы можете сохранить его с псевдонимом игрока. но лучше использовать loadAchievementsWithCompletionHandler. - person erkanyildiz; 08.08.2012