2012-09-17 56 views
0

我想我的應用程序,以檢查成果完成與否,我寫了下:檢查Game Center成就的進展是否正確?

-(void)checkAchievements{ 
    NSString* identifier = NULL; 
    double percentComplete = 0; 
    if (self.SavedScore >= 100) { 
     identifier = kAchivement100Taps; 
     percentComplete = 100.0; 
    } 

    if (self.SavedScore >= 500) { 
      identifier = kAchivement500Taps; 
      percentComplete = 100.0; 
    } 

    [...more similar achievements...] 

    if(identifier!= NULL){ 
     [self.gameCenterManager submitAchievement: identifier percentComplete: percentComplete]; 
    } 
} 

這是方法正確嗎? 謝謝!

回答

0

這是檢查是否一個成就是完全正確的方式:

- (void) loadAchievements 
{ 
    [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) 
     { 
      if (error == nil) 
      { 
       for (GKAchievement* achievement in achievements) 
        GKAchievement *gkAchmt = [[[GKAchievement alloc] initWithIdentifier: achievement.achievementId] autorelease]; 

        if (gkAchmt.isCompleted) { 
         // This achievement is achieved. 
        } 

      } 
     }]; 
} 

所以,如果你有你的成績在陣列同步,你可以做這樣的事情:

for (Achievement *achievement in arrAchievementsToSync) { 
    GKAchievement *gkAchmt = [[[GKAchievement alloc] initWithIdentifier: achievement.achievementId] autorelease]; 

    if (!gkAchmt.isCompleted) { 
     [self submitAchievement:gkAchmt percentComplete:100.0f]; 
    } 
} 
+0

但我的方法也有效? – yeker3

+0

@ yeker3但你只是提交而不檢查進度。你的問題是如何檢查Game Center成就的進展權利? –

+0

是的,但我想要做到這一點,我在如何做到這一點上有點失落。因爲我的方法一次只給我一個成就。有一個按鈕可以保存進度,當你點擊它時,它應該檢查自上次保存以來是否贏得了更多成就,如果在保存之前獲得多項成就,則只能獲得最後一項成就。 – yeker3