如何检查与Game Center(服务器)的连接是否可用?

时间:2011-08-30 10:48:43

标签: ios game-center

到目前为止,我已成功为我的应用实施Game Center。授权玩家是好的,报告成就也是如此。

我的问题是我想在飞行模式下使用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 isAuthenticated]];只要用户被记录,我总是得到YES在进入飞行模式之前进入游戏中心。

似乎即使没有与Game Center服务器的连接,之前授权的玩家仍被视为已获授权。

这导致我的按钮被显示,但当然Game Center报告它无法连接。

那么,检查与Game Center的真实连接是否可用的最佳方法是什么?

干杯

2 个答案:

答案 0 :(得分:0)

我认为没有用于检查的API,但您始终可以调用其中一个将返回结果的API,例如获取排行榜。如果你没有连接,它将失败。

答案 1 :(得分:0)

查看SCNetworkReachability接口。在SCNetworkReachability的文档中搜索,还有其他SO问题可以参考。基本上,您可以使用Reachability API不断更新标记,您可以检查该标记是否有网络连接。