swift - 如何重新验证游戏中心?

标签 swift game-center gamekit

我的游戏有 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: "")
           }
        }
    }
}

最佳答案

添加这些解决了问题。

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

关于swift - 如何重新验证游戏中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079941/

相关文章:

ios - 如何在应用程序中使用 swift 流式传输 mp3 文件?

swift - 在基于 NSTableView 的 View 中删除和添加行

xcode - 如何使用SwiftUI显示Game Center排行榜

ios - 使用 spritekit 无法进行碰撞检测

ios - 更新后无法打开 Realm Studio - Realm 文件当前在另一个进程中打开 - Mac 和 Realm Swift

ios - 无法将结构附加到数组属性

ios - 使用 Xcode 6.0.1 构建后,Game Center 无法识别应用程序

iphone - 游戏中心主机

ios - 替换 GKTurnBasedMatch 参与者属性中的玩家