GameCenter高分不包括最近设定的分数

GameCenter high scores doesn't include recently set score

游戏结束后,报告分数(reportablesGKScore个对象的数组):

GKScore.reportScores(reportables, withCompletionHandler: {(error) -> Void in
  if (error != nil) {
    Log.INFO("reportScores callback: \(error)")
  } else {
    Log.INFO("reported score")
    self.populate_high_scores(leaderboard)
  }
})

populate_high_scores 设置对 GKLeaderboard 的请求,然后发出调用以检索高分:

request.loadScoresWithCompletionHandler({(scores, error) -> Void in
  self.populate_high_scores_handler(scores, error: error)
})

所以要刷新:

  1. 用户玩游戏。
  2. 向GameCenter报告高分。
  3. <等等>
  4. 收到回调表示成功。
  5. 从 GameCenter 请求高分。
  6. <等等>
  7. 从 GameCenter 获得高分。

从GameCenter返回的分数不包括刚刚保存的分数。请注意,在 next 运行 通过时,将返回分数。即当前高分是50。用户玩游戏,得分100。GameCenter returns 50分。用户再次玩游戏,得分 150。GameCenter returns 100 分。

我不确定这是 GameCenter 沙盒模式的 "feature",还是我应该解决的问题。

事实上,我正在从 GameCenter 中检索正确的分数子集(减去最近设置的分数)。此外,高分请求肯定是 GameCenter returns 成功从 reportScores.

发出

已知游戏中心在沙盒中更新数据时存在问题,开发者在服务器上获得最低优先级。

尝试在非高峰时间测试您的代码(早上和半夜对我来说效果最好)

您可以做的另一件事是提交您的分数并不断检查排行榜直到它更新,然后再次提交以确保一切正常。

我最近在同时提交给 3 个排行榜时遇到了这个问题,只有其中一些会在我测试时更新,但是相同的代码现在已经在现实世界中运行并且没有问题。