iPhone模拟器6.0无法在沙盒模式下连接游戏中心



我正在尝试执行一个针对iOS 6的游戏中心感知应用程序。为了提供一些关于环境的信息,我在mac os 10.7.5上工作,XCode版本为4.5.2,XCode运行iphone和ipad模拟器版本6.0。问题是我无法通过ipad或iphone模拟器在沙盒模式下连接gamecenter,但在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…)

我的灵感来自:https://stackoverflow.com/a/8115807/837244,并决定用一段不同的代码登录游戏中心帐户。在viewdidload中,我通常调用:

[[GCHelper sharedInstance] authenticateLocalUser:self];

现在我把它注释掉了,通过下面的URL方案进入游戏中心,登录我的账户,然后注销。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];

最后通过注释URL代码并使用原始代码返回。现在它工作得很好,我猜问题是一个游戏中心帐户已经在模拟器中连接,它拒绝了每一个登录请求。希望苹果在错误信息上更清楚,解决这么简单的问题花了一个月的时间,希望这对其他人有所帮助。

我知道这个问题参考了特定的Xcode和iOS模拟版本,但如果你的模拟器已经登录了一个帐户,并且你不介意丢失模拟器上的任何数据(机会很小,但你永远不会知道),你可以简单地重置设置和数据。

去:模拟器->重置内容和设置…

…并在提示时确认操作。

这对于Xcode7来说当然是正确的。x运行iOS 9。x模拟器,其他人可能能够验证它是否适用于早期版本(特别是因为我已经发现了一个相当老的问题和答案)。

Animal451

Necrothreadomancy: + 1

最新更新