Game Center不响应authenticateWithCompletionHandler请求(iOS)

时间:2012-04-26 14:05:28

标签: objective-c ios game-center gamekit

这是我的情况:

1)用户第一次打开我的应用程序。我立即调用authenticateLocalUser尝试将它们登录到Game Center。已成功显示带有“登录”,“创建帐户”和“取消”按钮的弹出窗口。

2)用户现在不想登录,因此他们单击“取消”。 (这不是他们第三次点击'取消',我没有收到'禁用游戏中心,从游戏中心应用程序登录以启用'消息。)用户可以继续正常使用我的应用程序。

3)用户以后想要使用Game Center,所以他们点击我给他们的按钮登录游戏中心。我再次调用authenticateLocalUser。这次,弹出窗口不会出现。实际上没有任何事情发生,除了我收到这些控制台日志消息:

2012-04-26 08:38:42.861 Clink[332:707] authenticateWithCompletionHandler: enter
2012-04-26 08:38:42.863 Clink[332:707] authenticateWithCompletionHandler: exit

4)我已经测试过两次立即按下再次调用authenticateLocalUser的按钮,并且在这之前等待很长一段时间。无论何时我再次调用authenticateLocalUser,再一次都没有出现,我从函数中得到了这个错误:

Error Domain=GKErrorDomain Code=7 "The requested operation could not be completed because local player is already authenticating."

所以似乎正在发生的事情是,当我在步骤3中调用authenticateLocalUser时,我要求Game Center进行身份验证,但它已挂起并且没有响应我的请求。然后在第4步,当我再次尝试时,它告诉我它无法处理我的请求,因为它已经在尝试进行身份验证。但是我已经等了10分钟才收到我在第3步的请求回复,而且我从来没有从游戏中心得到过。

这是我的authenticateLocalUser函数的内容。据我所知,我没有从我从Apple的示例代码中下载的版本中更改它。

- (void) authenticateLocalUser
{
    if([GKLocalPlayer localPlayer].authenticated == NO)
    {
        [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 
        {
             [self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error];
        }];
    }
}

之前是否有其他人遇到此问题或对可能发生的事情有任何想法?我一直在看这个问题,我不确定发生了什么。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

当我有另一个游戏中心帐户进行身份验证时,我遇到了同样的问题。当您使用普通帐户登录某个游戏并与测试帐户同时登录时,就会发生这种情况。

只需重置您的设备设置,并且在测试时不要使用真实帐户登录其他游戏。当你同时做两件事时都会发生这种情况。重置您的设备设置,清理项目,它应该没问题。并且只使用测试iTunes帐户来测试你的游戏。

答案 1 :(得分:-1)

存在上述问题 1.如果您使用身份验证方法在这种情况下调用两个地方就会产生问题 2.如果您在A类中第一次使用身份验证方法并且在执行之后在B类中更改它们而不进行清理并重建

在这两种情况下只需清理然后重建。

我也面临同样的问题,但我有解决方案并解决了。