2017-09-06 44 views
0

我在我的游戏上有2种语言,我在iTunes Connect上有2个排行榜。当我切换语言时,我希望Game Center能够即时重新验证并更改排行榜。我的代码的作品,因为如果我关闭与主页按钮的应用程序,并重新打开它(不退出应用程序切换器)它加载其他排行榜的数据。但它不会在不关闭/重新打开的情况下加载新数据。我想我不得不重新进行身份验证,但调用相同的身份验证代码并不能完成这项工作。如何重新认证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

添加这些解决了这个问题。

leaderboardRequest?.identifier = "XXXX" 
localPlayer.setDefaultLeaderboardIdentifier("XXXX", completionHandler: { (err) in })