2017-09-06 3 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 }) 
関連する問題