我試圖讓這個工作在昨晚完成,但它不會。誰能幫忙?如何在iOS中顯示排行榜集合
我用下面的代碼來顯示排行榜: gameCenterViewController.leaderboardIdentifier = leaderboardId
這正常排行榜工作正常,但無法加載任何排行榜套,當我使用leaderboardSetId。你能直接鏈接到排行榜集,如果是的話,你如何做到這一點?
謝謝。
我試圖讓這個工作在昨晚完成,但它不會。誰能幫忙?如何在iOS中顯示排行榜集合
我用下面的代碼來顯示排行榜: gameCenterViewController.leaderboardIdentifier = leaderboardId
這正常排行榜工作正常,但無法加載任何排行榜套,當我使用leaderboardSetId。你能直接鏈接到排行榜集,如果是的話,你如何做到這一點?
謝謝。
確保您已認證本地播放器和在iTunes Connect中設置的排行榜,您需要report your scores to GameCenter以確保您使用64位Int。 現在你可以添加這顯示了領先的本土球員:
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)
}
請你參考下代碼與跨驗證配置。
希望這會幫助你。
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/
Ive得到了正常的排行榜顯示它只是不顯示在排行榜套。我嘗試用我的代碼中的排行榜集ID替換leaderboardIds,但這沒有奏效。我認爲這個解決方案假設你只需要做這些事情? –
是的,這是最低要求,你可以嘗試整合我在這裏給出的代碼並檢查。 – Hasya