在iOS7中,reportAchievementWithCompletionHandler已被弃用,但没有指定替代方法。

4

有没有人找到了[GKAchievement reportAchievementWithCompletionHandler]的替代方法?

通常当一些内容被弃用时,文档中会指出替代方法。但目前为止,这个方法还没有找到替代方法。我想将其从我们所遇到的其他问题列表中排除。

3个回答

12

我也在寻找同样的信息,看到了你的帖子。最终,在没有找到任何资料的情况下,我选择了以下内容:

NSArray *achievements = [NSArray arrayWithObjects:achievement, nil];
[GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
   if (error != nil) {
      NSLog(@"Error in reporting achievements: %@", error);
   }
}];

1
不错的发现,显然iOS更喜欢这个。我想他们宁愿为多个成就进行单个调用,而不是为每个成就进行一次调用...可能是出于某种网络优化考虑。 - MobileVet

0

这里是苹果公司的全部代码(与 Silly Goose 的答案相同/类似)

- (void) completeMultipleAchievements
{
    GKAchievement *achievement1 = [[GKAchievement alloc] initWithIdentifier: @"DefeatedFinalBoss"];
    GKAchievement *achievement2 = [[GKAchievement alloc] initWithIdentifier: @"FinishedTheGame"];
    GKAchievement *achievement3 = [[GKAchievement alloc] initWithIdentifier: @"PlayerIsAwesome"];
    achievement1.percentComplete = 100.0;
    achievement2.percentComplete = 100.0;
    achievement3.percentComplete = 100.0;

    NSArray *achievementsToComplete = [NSArray arrayWithObjects:achievement1,achievement2,achievement3, nil];
    [GKAchievement reportAchievements: achievementsToComplete withCompletionHandler:^(NSError *error)
             {
                  if (error != nil)
                  {
                      NSLog(@"Error in reporting achievements: %@", error);
                  }
             }];
      }

0

这在iOS7上没有任何问题。

- (void)checkAchievements
{
    if(myScore >= 25000){
            GKAchievement *achievement= [[GKAchievement alloc] initWithIdentifier:@"Achiev1"];
            achievement.percentComplete = 100.0;
            achievement.showsCompletionBanner = YES;
            [self Achievements:achievement];

        }
}

-(void)Achievements:(GKAchievement*)achievement {

    NSArray *achievements = [NSArray arrayWithObjects:achievement, nil];
    [GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
        if (error != nil) {
            NSLog(@"Error in reporting achievements: %@", error);
        }
    }];

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接