【问题标题】:Game Center doesn't respond to authenticateWithCompletionHandler request (iOS)Game Center 不响应 authenticateWithCompletionHandler 请求 (iOS)
【发布时间】:2012-04-26 14:05:27
【问题描述】:

这是我的情况:

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

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

3) 用户想稍后使用 Game Center,所以他们点击了我给他们的按钮来登录 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 步中,当我再次尝试时,它告诉我它无法处理我的请求,因为它已经在尝试进行身份验证。但是,我在第 3 步的请求中等待了长达 10 分钟的回复,但我从未从游戏中心收到回复。

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

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

以前有没有其他人遇到过这个问题,或者对可能发生的事情有任何想法?我已经研究了一段时间,但不确定发生了什么。

提前致谢!!

【问题讨论】:

  • 如果您解决了这个问题,请告诉我。我面临同样的问题。谢谢。
  • Newi,不幸的是我没有。然而,我发现一个统一开发人员面临同样的问题。我不确定目前是否有解决方案;这可能是有意的(尽管很奇怪)Apple 行为吗?
  • 我遇到了同样的问题...我还以为是我做错了什么。
  • @DavidStucke 不幸的是没有。任何人都想向 Apple 提交错误报告,看看他们是否会更改它? ;)
  • 这里有同样的问题,对于 iOS 来说太新了,无法深入了解可能发生的事情。这非常令人恼火。

标签: objective-c ios game-center gamekit


【解决方案1】:

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

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

【讨论】:

  • 花了几个小时试图找出我的代码失败的原因......刚刚从 GameCenter 注销,它可以工作,感谢 Apple......
【解决方案2】:

有以上问题的案例 1.如果您在这种情况下使用身份验证方法调用两个地方会产生问题 2.如果你第一次在A类中使用身份验证方法并且在执行之后然后在B类中更改它们的位置而不清理和重建

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

我也面临同样的问题,但我已经解决了。

【讨论】:

  • 对不起,我不明白你的回答。你能澄清一下吗?你的解决方案到底是什么?
猜你喜欢
  • 2017-08-06
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 2014-12-01
  • 2015-12-11
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多