首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS中显示排行榜集合

如何在iOS中显示排行榜集合
EN

Stack Overflow用户
提问于 2017-05-05 16:21:53
回答 2查看 822关注 0票数 9

我昨晚一直在试着让它工作,但是它不起作用。有人能帮上忙吗?

我使用以下代码显示排行榜:gameCenterViewController.leaderboardIdentifier = leaderboardId

这对于普通排行榜很有效,但当我使用leaderboardSetId时,无法加载任何排行榜集合。您可以直接链接到排行榜集合吗?如果可以,您如何做到这一点?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-05-17 17:27:09

请务必参考以下代码并交叉验证您的配置。

希望这能对你有所帮助。

代码语言:javascript
复制
import GameKit
class YourViewController: UIViewController, GKGameCenterControllerDelegate {

var gcEnabled = Bool() // Stores if the user has Game Center enabled
var gcDefaultLeaderBoard = String() // Stores the default leaderboardID

override func viewDidLoad() {
    super.viewDidLoad()

 self.authenticateLocalPlayer()

}

func authenticateLocalPlayer()
{
    let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer()

    localPlayer.authenticateHandler = {(ViewController, error) -> Void in
        if((ViewController) != nil) {

            // 1 Show login if player is not logged in

            self.presentViewController(ViewController!, animated: true, completion: nil)

        } else if (localPlayer.authenticated) {

            // 2 Player is already euthenticated & logged in, load game center

            self.gcEnabled = true

            // Get the default leaderboard ID
            localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler({ (leaderboardIdentifer: String?, error: NSError?) -> Void in
                if error != nil {
                    print(error)
                } else {
                    self.gcDefaultLeaderBoard = leaderboardIdentifer!
                }
            })


        } else {
            // 3 Game center is not enabled on the users device
            self.gcEnabled = false
            print("Local player could not be authenticated, disabling game center")
            print(error)
        }

    }
}


    @IBAction func clickToLeaderBoard(sender: UIButton) {

        let gcVC: GKGameCenterViewController = GKGameCenterViewController()
        gcVC.gameCenterDelegate = self
        gcVC.viewState = GKGameCenterViewControllerState.Leaderboards
        gcVC.leaderboardIdentifier = "YourLeaderboardId"
        self.presentViewController(gcVC, animated: true, completion: nil)

    }

func saveScoreOnGameCenter()
{
    let leaderboardID = "YourLeaderboardId"
    let sScore = GKScore(leaderboardIdentifier: leaderboardID)
    sScore.value = Int64(10)

    GKScore.reportScores([sScore], withCompletionHandler: { (error: NSError?) -> Void in
        if error != nil {
            print(error!.localizedDescription)
        } else {
            print("Score submitted")

        }
    })
}

func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController)
{
    self.dismissViewControllerAnimated(true, completion: nil)
}

}

更新

此外,请检查您的排行榜配置从后端。

这里有一些很好的帖子。

http://www.appcoda.com/ios-game-kit-framework/

https://developer.apple.com/game-center/

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html

票数 1
EN

Stack Overflow用户

发布于 2017-05-17 15:05:27

在确保您已经验证了本地播放器和在iTunes连接中设置的排行榜之后,您将需要report your scores to GameCenter以确保您使用64位整数。现在,您可以添加以下内容来显示本地玩家的排行榜:

代码语言:javascript
复制
func showGKGameCenterViewController(_ viewController: UIViewController) {
    if gameCenterIsDisabled {
      print("Local player is not authenticated")
    }
    let gameCenterViewController = GKGameCenterViewController()
    gameCenterViewController.delegate = self
    gameCenterViewController.viewState = GKGameCenterViewControllerState.default

    viewController.presentViewController(gameCenterViewController, animated: true, completion: nil)
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43799994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档