Swift 连接Itunes连接到GameCenter排行榜的代码

Swift 连接Itunes连接到GameCenter排行榜的代码,swift,sprite-kit,app-store-connect,game-center,game-center-leaderboard,Swift,Sprite Kit,App Store Connect,Game Center,Game Center Leaderboard,我已经使用下面的代码在我的应用程序中创建了我的GameCenter页面。但是,我无法将我在iTunes connect上创建的排行榜连接到我的代码,因此该应用程序只生成一个空白的排行榜页面。如何将我的Itunes connect排行榜连接到我的代码,以及如何使应用程序将你的分数放在排行榜上,因为现在排行榜是空的 以下是我使用的代码: override func viewDidAppear(animated: Bool) { //check user is logged into Gam

我已经使用下面的代码在我的应用程序中创建了我的GameCenter页面。但是,我无法将我在iTunes connect上创建的排行榜连接到我的代码,因此该应用程序只生成一个空白的排行榜页面。如何将我的Itunes connect排行榜连接到我的代码,以及如何使应用程序将你的分数放在排行榜上,因为现在排行榜是空的

以下是我使用的代码:

override func viewDidAppear(animated: Bool) {

    //check user is logged into GameCenter
    var localPlayer = GKLocalPlayer.localPlayer()

    localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in

        if ((viewController) != nil) {

            self.presentViewController(viewController, animated: true, completion: nil)

        } else {

            println((GKLocalPlayer.localPlayer().authenticated))
        }

    }

//display leaderboard
func showLeaderboard() {

    var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards

    gcViewController.leaderboardIdentifier = "MyLeaderboard"

    self.showViewController(gcViewController, sender: self)
    self.navigationController?.pushViewController(gcViewController, animated: true)

}

//take leaderboard away
func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!) {

    self.dismissViewControllerAnimated(true, completion: nil)

}
如何将Itunes connect排行榜连接到应用程序,以及使用什么代码将分数上传到排行榜?

首先将GKGameCenterController添加到您的课堂:

class viewController: UIViewController, GKGameCenterControllerDelegate {
...
}
这是您需要用来验证播放机的代码:

func login() {
    println("Game Center Login Called")
    let localPlayer = GKLocalPlayer.localPlayer()

    // Handle the authentication
    localPlayer.authenticateHandler = {(Home: UIViewController!, error: NSError!) -> Void in
        if Home != nil {
            println("Authentication is being processed.")
            self.presentViewController(Home, animated: true, completion: nil)

        } else {
            println("Player has been successfully authenticated.")
        }
    }
}
这是显示排行榜时应使用的代码:

func showLeaderboard() {

    var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards

    gcViewController.leaderboardIdentifier = "YOUR_LEADERBOARD_ID"
    self.showViewController(gcViewController, sender: self)
    self.presentViewController(gcViewController, animated: true, completion: nil)
}
当用户点击“完成”时,需要此代码

func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!)
{
    self.dismissViewControllerAnimated(true, completion: nil)
}
您可以在viewDidLoad方法中调用身份验证方法login:

当用户点击按钮时显示排行榜

@IBAction func button(sender: AnyObject) {

    showLeaderboard()
}
如果要提交最佳分数:

if GKLocalPlayer.localPlayer().authenticated {
                        println("I have submitted the score to Game Center")
                        let gkScore = GKScore(leaderboardIdentifier: "Best_Score")
                        gkScore.value = Int64(bestScore)
                        GKScore.reportScores([gkScore], withCompletionHandler: ( { (error: NSError!) -> Void in
                            if (error != nil) {
                                // handle error
                                println("Error: " + error.localizedDescription);
                            } else {
                                println("Score reported: \(gkScore.value)")
                            }
                        }))
                    }

在此代码中,我将在哪里将iTunes connect排行榜连接到应用程序?我将在何处向排行榜提交用户分数?请准确查看我的答案:您的排行榜ID。使用分数提交更新了代码。很高兴提供帮助!:如果您认为我的答案解决了您的问题,您可以通过勾选白色图标将其变为绿色来将其标记为正确。非常感谢。出于某种原因,排行榜上出现了这样的信息:没有分数。为什么呢?谢谢你的快速回复。你确定要用你的排行榜ID修改这一行吗?让gkScore=gkScore排行榜标识符:最佳分数
if GKLocalPlayer.localPlayer().authenticated {
                        println("I have submitted the score to Game Center")
                        let gkScore = GKScore(leaderboardIdentifier: "Best_Score")
                        gkScore.value = Int64(bestScore)
                        GKScore.reportScores([gkScore], withCompletionHandler: ( { (error: NSError!) -> Void in
                            if (error != nil) {
                                // handle error
                                println("Error: " + error.localizedDescription);
                            } else {
                                println("Score reported: \(gkScore.value)")
                            }
                        }))
                    }