【问题标题】:GameCenter high scores doesn't include recently set scoreGameCenter 高分不包括最近设定的分数
【发布时间】:2015-06-22 14:33:08
【问题描述】:

游戏结束后,会报告分数(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_scoresGKLeaderboard 发起请求,然后调用获取高分:

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

所以要刷新:

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

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

我不确定这是否是 GameCenter 沙盒模式的“功能”,还是我应该解决的问题。

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

【问题讨论】:

  • 我刚刚用弹出一个 Game Center 排行榜替换了我的自定义 Game Over 视图/代码,并注意到 Apple 的代码也出现了同样的问题。所以它要么只是沙盒,要么是一个已知的错误。

标签: ios swift game-center


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2021-09-02
    • 1970-01-01
    相关资源
    最近更新 更多