我正在尝试实现一个针对 iOS 6 的游戏中心感知应用程序。为了提供有关环境的一些信息,我正在使用 XCode 版本为 4.5.2 的 mac os 10.7.5 并且 xcode 正在运行 iphone 和 ipad 模拟器版本 6.0。问题是我无法通过 ipad 或 iphone 模拟器以沙盒模式连接到游戏中心,但是在我的 iphone 中测试时,相同的代码可以正常工作。
我遵循了苹果开发者库中的游戏中心编程指南,我得到了这个 atm,它是从 appdelegate 中的 applicationDidFInishLaunching 调用的:
- (void)authenticateLocalUser:(UIViewController *)currentViewController
{
if (!gameCenterAvailable) return;
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
if (viewController != nil)
{
[currentViewController presentViewController:viewController animated:YES completion:nil];
}
else if (localPlayer.isAuthenticated)
{
NSLog(@"Player authenticated");
}
else
{
NSLog(@"Player not authenticated");
}
NSLog(@"Error: %@",error);
};
}
它输出:
Error: Error Domain=GKErrorDomain Code=2 "The requested operation has been cancelled."
UserInfo=0x8690510 {NSLocalizedDescription=The requested operation has been cancelled.}
GKSConnSettings: set server: {
"gk-cdx" = "17.173.254.218:4398";
"gk-commnat-cohort" = "17.173.254.220:16386";
"gk-commnat-main0" = "17.173.254.219:16384";
"gk-commnat-main1" = "17.173.254.219:16385";
}
虽然我的操作系统不是 10.8.2,但我已经尝试过修复主机文件,但它没有帮助。https://devforums.apple.com/thread/168811?tstart=0
知道可能是什么原因吗?
编辑:好吧,事实证明以 GKSConnSettings 开头的输出部分没有表示任何问题,这是连接到游戏中心时的常规输出,正如我从互联网上阅读的内容所了解的那样。我在身份验证块内打印了实际的错误消息(GKErrorDomain = 2 ...)。