6

我正在尝试在游戏中心报告我的高分。我认为我的代码正在运行,但游戏中心没有更新高分。排行榜是使用此参考名称创建的:“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()
                        })
                }
             }
        }
}

你有想法吗?

4

2 回答 2

3

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

如果您为沙盒测试人员使用 Test Flight,请确保也将它们添加到 iTunes 连接中。

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

于 2014-12-07T01:13:28.440 回答
0

You can take a look at this logic in this github repo https://github.com/jocelynlih/SwiftGameBook/blob/master/PencilAdventure/PencilAdventure/ScoreManager.swift#L26

To report score you need to call pass the authenticateHandler closure function and in that if localPlayer is authenticated then report score.

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 } } }

于 2014-12-05T05:19:24.530 回答