不可预知的GameCenter断开连接错误[沙箱]

时间:2014-09-06 15:58:31

标签: ios game-center gamekit

我正在与GameCenter开发游戏,我有几个测试人员在AdHoc(Beta)发行版中使用它,因此他们在我们准备上线时使用Sandbox进行测试。

我遇到了与GameCenter不可预测的断开连接。例如,当使用GKLeaderboard.loadScoresWithCompletionHandler加载排行榜得分时,它会返回NSError,表示该播放器未经过身份验证(错误代码#6,即使他在开始时已通过身份验证会议和以前的同类请求已成功)。有时这甚至发生在游戏结束时,在成功完成GKTurnBasedMatch之后,当我试图向排行榜报告分数时。

我注意到的一些事情:

  1. 它经常发生在我的iPad上(每天几次)和我的几个beta测试者,但它从未发生在我的iPhone或某些其他beta测试者身上,即使玩家同时玩。例如,我可以用我的iPhone和我的iPad玩游戏,iPad会一直遇到这个错误,但iPhone永远不会。
  2. 有时似乎比其他时候更糟糕。例如,我甚至不能在周一晚上进行单回合比赛,我的beta测试员也遇到了很多问题,但周二晚上它运作良好。
  3. 看起来没有发送Authentication Changed消息(即,setAuthenticateHandler块未被调用,GKPlayerAuthenticationDidChangeNotificationName块也未被发布。我的第一个出现问题的迹象就是GameCenter请求因错误而失败。
  4. 以上让我感觉感觉,因为这是一个问题,沙盒简单地不可靠(例如,它在周一过载)。但是,我不能冒这种实际应用程序的经验。

    所以,我的问题是2部分:

    1. 任何人都可以确认GameCenter在生产中实际上是可靠的,而且这些问题只是Sandbox吗?或者至少确认问题不在我的代码中?
    2. 我如何防范这些错误?我在遇到此类错误时尝试调用[[GKPlayer localPlayer] setAuthenticateHandler:...],但似乎没有重新验证用户。

1 个答案:

答案 0 :(得分:0)

我们面临着类似的问题。一个原因可能是,GameCenter似乎在主线程上运行了一些保持活跃的消息传递。一旦您的代码即将阻止,您可能会断开连接。检查你的线程。

您可能还会在Apple开发者论坛中考虑这个主题:

https://devforums.apple.com/thread/199452?tstart=0