2017-09-06 2 views
0

J'ai 2 langues sur mon jeu et j'ai 2 classements sur iTunes Connect. Quand je change de langue, je veux que Game Center se réauthentifie et change le classement à la volée. Mon code fonctionne parce que si je ferme l'application avec le bouton d'accueil et le rouvre (ne pas quitter le sélecteur d'applications), il charge les données de l'autre leaderboard. Mais il ne charge pas les nouvelles données sans fermeture/réouverture. Je pense que je dois réauthentifier d'une manière ou d'une autre mais appeler le même code d'authentification ne fait pas l'affaire.Comment réauthentifier 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: "") 
      } 
     } 
    } 
} 

Répondre

0

Ajout de ceux-ci a résolu le problème.

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