我的游戏中有一个 Game Center 排行榜,我使用自己的 GUI 使用从该GKLeaderboard loadScoresWithCompletionHandler
方法检索到的数据来显示该排行榜。
GKScore reportScoresWithCompletionHandler
我使用该方法报告新分数。我的问题是,当我为本地玩家报告新的高分时,当我打开我的排行榜 GUI(强制loadScoresWithCompletionHandler
调用)时,玩家分数没有更新 - 它显示的是他刚刚击败的旧分数。
但是,如果我关闭(而不是杀死)游戏,然后重新打开它并再次打开 GUI,嘿-presto,新的分数就会显示出来。
这告诉我,GameKit 中必须有某种形式的内部缓存在应用程序恢复时被重置。我确实知道,在应用程序恢复时,GC 会调用我的 authenticationHandler 让我知道它已经重新验证了播放器,所以也许该方法中的某些东西会擦除设置的任何内部缓存?
这是我开发的第一款使用自定义 UI 而非原生 GC 视图控制器显示 Game Center 数据的游戏,我从未遇到过这个问题。有没有人有类似的经验,可以告诉我为什么GKLeaderboard loadScoresWithCompletionHandler
给我旧数据?