2012-08-01 86 views
6

我成功通过我的游戏的第一级,它的工作原理,但是当我重播级别并通过它时,它再次显示通知横幅,我如何防止这种情况发生?游戏中心成就解锁多次

+0

看看[这里](http://stackoverflow.com/questions/4768163/check-if-youve-already-unlocked-an-成就在游戏中心gamekit)问题 - 听起来像你不检查成就是否已解锁。 – thegrinner 2012-08-01 20:29:34

回答

11

使用此方法提交成果:

-(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]; 

    }]; 

} 
+0

先生,你救了我的一天 – 2013-09-04 11:23:16

-2

保存用户已通过级别NSUserDefaults,然后当用户通过级别检查NSUserDefaults为您的密钥,如果它在那里,则不要执行Game Center的成绩代码。

+0

这在一定程度上起作用。我发现如果我完成了成就,然后退出了游戏中心并登录了一个已经完成了成就的帐户,那么它就不可能为新玩家赚取:( – 2012-08-02 01:36:46

+0

),您可以使用玩家别名来存储它,但是使用loadAchievementsWithCompletionHandler – erkanyildiz 2012-08-08 15:44:11