0

アチーブメントが完了したかどうかをアプリに確認してもらいたいので、次のように書きました。

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

この方法は正しいですか?ありがとう!

4

1 に答える 1

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];
    }
}
于 2012-09-17T17:26:47.533 に答える