【问题标题】:How to check that connection to Game Center (the servers) is available?如何检查与 Game Center(服务器)的连接是否可用?
【发布时间】:2011-09-01 03:07:12
【问题描述】:

到目前为止,我已经成功地为我的应用实施了 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 的真实连接是否可用的最佳方法是什么?

干杯

【问题讨论】:

    标签: ios game-center


    【解决方案1】:

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

    【讨论】:

    • 谢谢罗杰。我想我会接受那个提议。
    【解决方案2】:

    查看SCNetworkReachability 接口。在文档中搜索 SCNetworkReachability,还有其他 SO 问题可以参考。基本上,您可以使用可达性 API 来不断更新一个标志,您可以检查该标志以了解您是否有网络连接。

    【讨论】:

    • 感谢您的建议,马克,但由于它“仅”检查连接性,因此我将寻求罗杰斯的建议。
    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多