如何用快速报道游戏中心的高分

时间:2014-12-04 21:04:17

标签: iphone swift ios8 xcode6 game-center-leaderboard

我正试图在游戏中心报道我的高分。我认为我的代码正在运行,但游戏中心没有使用高分进行更新。 使用此引用名称创建排行榜:“funfairBalloon”和此排行榜ID:55009943。 我有3个沙盒测试人员,游戏中心启用,玩家在游戏中心进行身份验证。

我的身份验证和报告代码是:

func authenticateLocalPlayer()
{
    var localPlayer = GKLocalPlayer.localPlayer()

    localPlayer.authenticateHandler =
        { (viewController : UIViewController!, error : NSError!) -> Void in
            if viewController != nil
            {
                self.presentViewController(viewController, animated:true, completion: nil)
            }
            else
            {
                if GKLocalPlayer.localPlayer().authenticated {
                    let gkScore = GKScore(leaderboardIdentifier: "55009943")
                    gkScore.value = Int64(highscore)
                    GKScore.reportScores([gkScore], withCompletionHandler: {(error) -> Void in
                        let alert = UIAlertView(title: "Success",
                            message: "Score updated",
                            delegate: self,
                            cancelButtonTitle: "Ok")
                            alert.show()
                        })
                }
             }
        }
}
你知道吗?

2 个答案:

答案 0 :(得分:3)

最佳做法是将您的应用ID添加到排行榜标识符中。在此之前我无法让它工作。你可能遇到同样的麻烦。制作名为“com.whateverName.55009943”的测试排行榜并更新您的代码。看看它是否像我那样有效。

如果您正在为沙盒测试人员使用Test Flight,请确保在iTunes连接上添加它们。

最后,如果您遵循上述建议,此link应该可以帮助您解决为什么您没有看到任何人出现在排行榜上。

答案 1 :(得分:0)

您可以在此github repo https://github.com/jocelynlih/SwiftGameBook/blob/master/PencilAdventure/PencilAdventure/ScoreManager.swift#L26

中查看此逻辑

要报告需要调用的分数,请传递authenticateHandler闭包函数,如果localPlayer经过身份验证,则报告分数。

var localPlayer = GKLocalPlayer.localPlayer() localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in if viewController != .None { // Show view controller } else { if localPlayer.authenticated { var scoreToReport = GKScore(leaderboardIdentifier: "Leaderboard\(level)", player: localPlayer) scoreToReport.value = Int64(score) GKScore.reportScores([scoreToReport], withCompletionHandler: nil) } else { // User not authenticated } } }