【问题标题】:Connecting Itunes Connect To Code For GameCenter Leaderboard连接 iTunes 连接到 GameCenter 排行榜的代码
【发布时间】:2015-03-23 18:54:03
【问题描述】:

我使用下面的代码在我的应用程序中创建了我的 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 排行榜连接到应用程序,以及使用什么代码将分数上传到排行榜?

【问题讨论】:

    标签: swift sprite-kit app-store-connect game-center game-center-leaderboard


    【解决方案1】:

    首先将GKGameCenterControllerDelegate 添加到您的班级:

    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()

    override func viewDidLoad() {
        super.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 排行榜连接到应用程序?我会在哪里将用户得分提交到排行榜?
    • 请准确看我的回答:"YOUR_LEADERBOARD_ID"。使用分数提交更新了代码。
    • 很高兴为您提供帮助! :) 如果您认为我的回答已经解决了您的问题,您可以通过勾选白色图标将其变为绿色来将其标记为正确。谢谢!
    • 由于某种原因,排行榜出现了“没有得分”的消息。这是为什么?感谢您的快速回复。
    • 您确定用您的排行榜 ID 修改了这一行吗? let gkScore = GKScore(leaderboardIdentifier: "Best_Score")
    猜你喜欢
    • 2011-05-27
    • 2017-07-11
    • 2014-11-04
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多