Ios 如何检查与游戏中心(服务器)的连接是否可用?

Ios 如何检查与游戏中心(服务器)的连接是否可用?,ios,game-center,Ios,Game Center,到目前为止,我已经成功地为我的应用程序实现了游戏中心。授权玩家是可以的,报告成绩也是可以的 我的问题是当我想用我的iPad在飞行模式下测试应用程序的行为时 玩家将无法获得此代码的授权(如我所料,因此没有问题) GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; if ([localPlayer isAuthenticated] == YES){ NSLog(@"The local player has already

到目前为止,我已经成功地为我的应用程序实现了游戏中心。授权玩家是可以的,报告成绩也是可以的

我的问题是当我想用我的iPad在飞行模式下测试应用程序的行为时

玩家将无法获得此代码的授权(如我所料,因此没有问题)

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if ([localPlayer isAuthenticated] == YES){
    NSLog(@"The local player has already authenticated.");
    return;
} else {

    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
        if (error == nil){
            NSLog(@"Successfully authenticated the local player.");
            NSLog(@"Player Alias = %@", [localPlayer alias]);

        } else {
            NSLog(@"Failed to authenticate the player with error = %@", error);
                        }
    }];
}
但是,当我稍后在UIView中使用以下代码检查播放器是否已授权(因此我知道是否应启用“显示成就”按钮)
[achievementButton setEnabled:[localPlayer已验证]只要用户在进入飞行模式前登录到游戏中心,我总是得到“是”

看起来,即使没有连接到游戏中心服务器,以前授权的玩家仍然被视为已授权

这导致显示“我的”按钮,但游戏中心报告它无法连接

那么,检查与游戏中心是否有真正连接的最佳方法是什么


干杯

我认为没有API来检查这一点,但是您可以随时调用其中一个API来返回结果,比如获得排行榜。如果未连接,它将失败。

请查看
SCNetworkReachability
接口。在文档中搜索SCNetworkReachability,还有其他与此相关的SO问题。基本上,您可以使用可达性API不断更新一个标志,您可以检查是否有网络连接。

感谢您的建议标记,但由于它“仅”检查连接,我将支持罗杰斯的建议。谢谢罗杰。我想我会赞成那个建议。