我的游戏中有2种语言,iTunes Connect上有2个排行榜。当我切换语言时,我希望Game Center能够重新进行身份验证并快速更改排行榜。我的代码有效,因为如果我用主页按钮关闭应用程序并重新打开它(不从应用程序切换器退出),它会加载其他排行榜的数据。但它不会在不关闭/重新打开的情况下加载新数据。我想我必须以某种方式重新验证,但调用相同的身份验证代码不起作用。
func authenticateLocalPlayer(after: Double) {
DispatchQueue.main.asyncAfter(deadline: .now() + after) {
localPlayer = GKLocalPlayer.localPlayer()
localPlayer.authenticateHandler = {(ViewController, error) -> Void in
if((ViewController) != nil) {
// Show login if player is not logged in
//self.present(ViewController!, animated: true, completion: nil)
} else if (localPlayer.isAuthenticated) {
// Get the default leaderboard ID
localPlayer.loadDefaultLeaderboardIdentifier(completionHandler: { (leaderboardIdentifer, error) in
if error != nil { print(error ?? "Error")
} else { gcDefaultLeaderBoard = leaderboardIdentifer! }
})
leaderboardRequest?.identifier = NSLocalizedString("Leaderboard ID".localized(lang: UserDefaults.standard.object(forKey: "Language") as! String), comment: "")
}
}
}
}
答案 0 :(得分:0)
添加这些解决了这个问题。
leaderboardRequest?.identifier = "XXXX"
localPlayer.setDefaultLeaderboardIdentifier("XXXX", completionHandler: { (err) in })