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

时间:2015-06-22 14:33:09

标签: ios swift game-center

游戏结束后,会报告得分(reportables是一组GKScore个对象):

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_scoresGKLeaderboard设置请求,然后发出呼叫以检索高分:

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

所以刷新:

  1. 用户玩游戏。
  2. 向GameCenter报告了高分。
  3. <等待>
  4. 收到回拨表示成功。
  5. 要求GameCenter取得高分。
  6. <等待>
  7. 从GameCenter获得高分。
  8. 从GameCenter返回的分数不包括刚刚保存的分数。请注意,在 next 运行时,将返回分数。即当前的高分是50.用户玩游戏,得分100. GameCenter返回50分。用户再次玩游戏,得分150. GameCenter返回100分。

    我不确定这是否是GameCenter Sandbox模式的“功能”,或者是否应该解决这个问题。

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

1 个答案:

答案 0 :(得分:1)

众所周知,游戏中心在沙盒中存在更新数据的问题,开发人员在服务器上获得的优先级最低。

尝试在非高峰时间测试您的代码(早上和半夜最适合我)

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

我最近在同时提交到3个排行榜时遇到了这个问题,在我测试的时候只有部分排行榜会更新,但现在这些代码在现实世界中存在并且没有问题。