【问题标题】:Game Center achievement unlocking multiple times游戏中心成就多次解锁
【发布时间】:2023-04-01 10:33:01
【问题描述】:

我设置了通过游戏第一关的成就,它可以工作,但是当我重玩关卡并通过它时,它再次显示通知横幅,我该如何防止这种情况发生?

【问题讨论】:

  • 看看this的问题 - 听起来你没有检查成就是否已经解锁。

标签: iphone objective-c ios xcode game-center


【解决方案1】:

使用此方法提交成就:

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

    }];

}

【讨论】:

  • 先生,您拯救了我的一天
【解决方案2】:

保存用户已通过关卡到NSUserDefaults,然后当用户通过关卡时检查NSUserDefaults是否有你的钥匙,如果有则不要为游戏中心做成就代码。

【讨论】:

  • 这在一定程度上有效。我发现如果我完成了成就然后退出游戏中心并登录到一个没有完成成就的帐户,那么新玩家就无法获得奖励:(
  • 您可以使用播放器别名存储它。但使用 loadAchievementsWithCompletionHandler 更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多