ios - 如何通过 GameCenter 验证玩家身份

标签 ios game-center

我需要通过游戏中心对玩家进行身份验证。我设法做到了,但是它停止了工作。现在我总是得到“viewController = nil”并且在检查 localPlayer 是否已通过身份验证时它总是返回 false。

这就是我正在做的:

-(void)authenticateLocalPlayer{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController != nil) {
            [_spriteViewController presentViewController:viewController animated:YES completion:nil];
        } else {
            if ([GKLocalPlayer localPlayer].authenticated) {
                NSLog(@"authenticated");
                _gameCenterEnabled = YES;

                // Get the default leaderboard identifier.
                [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) {

                    if (error != nil) {
                        NSLog(@"%@", [error localizedDescription]);
                    } else {
                        _leaderboardIdentifier = leaderboardIdentifier;
                    }
                }];
            } else {
                NSLog(@"not authenticated"); // This is always triggered
                _gameCenterEnabled = NO;
            }
        }
    };
}

我做错了什么吗?我应该先做什么/检查什么才能让它起作用?

最佳答案

如果您在同一台设备上测试了多次,那么首先要重置您的手机设置。引用this link

那么这段代码可以帮助你。

       if ([GKLocalPlayer localPlayer].authenticated == NO) {
            GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];

            localPlayer.authenticateHandler = ^(UIViewController *gcvc,NSError *error) {

                if(gcvc) {

                    [self presentViewController:gcvc animated:YES completion:nil];
                }
                else {
                    _gameCenterEnabled = NO;

                }
            };
        }

        else if ([GKLocalPlayer localPlayer].authenticated == YES){
            _gameCenterEnabled = YES;


        }

对于排行榜标识符,您可以首先在已经从 iTunes 获取的代码中静态定义。它工作正常。但在此之前重置游戏中心所需的所有设置,就好像多次游戏中心身份验证失败然后游戏中心禁用该应用程序一样。我们必须重置所有设置。如果您想尝试,请在 iphone 模拟器中尝试。重置 iphone 模拟器并运行此代码。它有效。

关于ios - 如何通过 GameCenter 验证玩家身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724247/

相关文章:

iPhone Simulator 6.0 无法在沙盒模式下连接到 gamecenter

iphone - 带游戏中心的回合制多人游戏

ios - GKPlayer - 存储自定义数据

ios - 快速解析 : How to Push Notification To a Specific Device/objectId

ios - 从 PFFile 到 PFFile 的条件转换总是成功

ios - CLLocationManager开始监控区域时如何判断用户是否已经在区域内

iphone - 处理程序化回合制游戏的邀请

java - 在 IO 和 Android 之间发送数据? (字节数组)

objective-c - 如何在 Objective-C 中设置文本字段的委托(delegate)?

ios - 替换 GKTurnBasedMatch 参与者属性中的玩家