Game Center 身份验证成功和失败(iOS 7,目标 C)



我已经学习了一些教程&关于使用Objective C验证本地玩家的Game Center功能的苹果文档。目前,我们的测试版具有适用于排行榜的Game Center验证功能。然而,对成就的认证似乎有问题,因为我们的成就都不是来自iTunes Connect。在ViewController.m中,第一次身份验证如下所示:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(showAuthenticationViewController)
 name:PresentAuthenticationViewController
 object:nil];
[[GameKitHelper sharedGameKitHelper] authenticateLocalPlayer];
}
- (void)showAuthenticationViewController
{
GameKitHelper *gameKitHelper = [GameKitHelper sharedGameKitHelper];
UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: gameKitHelper.authenticationViewController animated:YES completion:nil]; }

在GameKitHelper中,下一个身份验证步骤发生:

- (void)authenticateLocalPlayer
{
//1
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
    //3
    [self setLastError:error];
    if(viewController != nil) {
        //4
        [self setAuthenticationViewController:viewController];
    } else if([GKLocalPlayer localPlayer].isAuthenticated) {
        //5
        _enableGameCenter = YES;
        NSLog(@"Successful");
    } else {
        //6
        _enableGameCenter = NO;
        NSLog(@"Failure");
    }
  };
}

加载成绩时,使用以下功能:

-(void)achievementLoad {
if (_enableGameCenter) {
    [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
        if (error != nil) {
            NSLog(@"Error in loading achievements.");
        }
        if (achievements != nil) {
            //Process achievements.
            for (GKAchievement *temp in achievements) {
                //temp
                [[GameKitHelper sharedGameKitHelper].achievementsDictionary setObject:temp forKey:temp.identifier];
                //[_achievementsDictionary setObject:temp forKey:temp.identifier];
            }
            NSLog(@"Achievements Retrievemented");
        }
    }];
  } else {
    NSLog(@"Achievements not loaded");
  }
}

当尝试检索成就时,游戏将始终报告"错误代码6:玩家未通过身份验证"(错误!=nil为true)。然后,当我尝试使用成就字典时,它被设置为nil,这没有意义。

我已经激活了Game Center的iTunes Connect信息,并且我已经使用沙箱帐户登录。还有什么是我做错的吗?

任何帮助都将不胜感激。谢谢

  1. 确保在developer.apple.com上的标识符下,检查您的应用程序,验证"Game Center已打开"
  2. 在Xcode中,确保在"功能"下的"目标"中,确保Game Center Switch已打开
  3. 确保你包括GameKit.framework(构建阶段,链接二进制与库)
  4. 在iTunes Connect中,对于您的应用程序,请确保应用程序和iTunes Connect中的版本号相同
  5. 在您的应用程序版本(预提交)中的iTunes Connect中,确保该版本的游戏中心按钮已打开,并且您已在应用程序版本屏幕中添加排行榜/成就(单击+)
  6. 确保您的iOS设备确实已登录Game Center(请注销并重新登录)

最新更新