我的游戏中有一个Game Center排行榜,我使用我自己的GUI使用从GKLeaderboard loadScoresWithCompletionHandler
方法检索到的数据进行显示。
我使用GKScore reportScoresWithCompletionHandler
方法报告新分数。我的问题是,当我报告本地玩家的新高分时,当我打开我的排行榜GUI(迫使loadScoresWithCompletionHandler
被召唤)时,玩家得分不会被更新 - 它是'显示他刚刚击败的旧的。
但是,如果我关闭(而不是杀死)游戏,然后重新打开它并再次打开GUI,嘿 - presto,显示新的分数。
这告诉我GameKit中必须有某种形式的内部缓存,当应用程序恢复时会重置。我知道在应用程序恢复时,GC调用我的authenticationHandler让我知道它已经重新验证了播放器,所以也许该方法中的某些内容会擦除内部缓存设置的内容?
这是我使用自定义用户界面显示游戏中心数据的第一个游戏,而不是我从未遇到此问题的原生GC视图控制器。有没有人有类似的经验,可以告诉我为什么GKLeaderboard loadScoresWithCompletionHandler
给我旧的数据?
答案 0 :(得分:0)
我遇到了同样的问题,它给了我一个不眠之夜,特别是在stackoverflow和其他论坛上看不到与之相关的答案。 然后,我发现某个地方,只要等级完成,他们就会报告新的分数。我将按钮从提交排行榜更改为显示排行榜,它解决了问题。我正在使用GC视图控制器。而我只是称为showleaderboard,因为它是一个非自定义排行榜。