这是我的情况:
1) 用户第一次打开我的应用程序。我立即调用 authenticateLocalUser 尝试将它们登录到 Game Center。成功显示带有登录、创建帐户和取消按钮的弹出窗口。
2) 用户现在不想登录,所以他们点击取消。(这不是他们第三次点击“取消”,而且我没有收到“游戏中心已禁用,从游戏中心应用程序登录以启用”消息。)用户可以继续正常使用我的应用程序。
3) 用户想稍后使用游戏中心,所以他们点击我给他们的按钮登录游戏中心。我再次调用 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 步中,当我再次尝试时,它告诉我它无法处理我的请求,因为它已经在尝试进行身份验证。但是,我在第 3 步的请求中等待了长达 10 分钟的回复,但我从未从游戏中心收到回复。
这是我的 authenticateLocalUser 函数的内容。据我记得,我没有从我从 Apple 的示例代码下载的版本中更改它。
- (void) authenticateLocalUser
{
if([GKLocalPlayer localPlayer].authenticated == NO)
{
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
{
[self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error];
}];
}
}
以前有没有其他人遇到过这个问题,或者对可能发生的事情有任何想法?我已经看了一段时间了,我不确定发生了什么。
提前致谢!!