到目前为止,我已成功为我的应用实施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的真实连接是否可用的最佳方法是什么?
干杯
答案 0 :(得分:0)
我认为没有用于检查的API,但您始终可以调用其中一个将返回结果的API,例如获取排行榜。如果你没有连接,它将失败。
答案 1 :(得分:0)
查看SCNetworkReachability
接口。在SCNetworkReachability的文档中搜索,还有其他SO问题可以参考。基本上,您可以使用Reachability API不断更新标记,您可以检查该标记是否有网络连接。