【问题标题】:how report highscore in Game center with swift如何用swift在游戏中心报告高分
【发布时间】:2014-12-04 21:04:16
【问题描述】:

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

你有什么想法吗?

【问题讨论】:

  • 最好将您的应用 ID 添加到排行榜标识符中。在那之前我很难让它工作。你可能会遇到同样的麻烦。制作一个名为“com.whateverName.55009943”的测试排行榜并更新您的代码。看看这对我是否有效。
  • 我在 iTunes 连接上创建了一个名为“com.whateverName.55009943”的排行榜并更新了'leaderboardIdentifier : "com.whateverName.55009943",但游戏中心仍然没有得分和玩家。 qmzdcjselrbhvslkvhblqziehbflshbv AAAAAHHHHHHHHH 我疯了yyyyyyy
  • YAHOUUUUUU !!!谢谢你,我发现了我的错误!我的排行榜没有设置好!我爱你 !!!!从 3 天开始寻找!!!!
  • 你必须回答 +50 声望 :D
  • 但是我在游戏中心的沙盒测试器中看不到其他玩家是否正常?

标签: iphone swift ios8 xcode6 game-center-leaderboard


【解决方案1】:

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

如果您为沙盒测试人员使用 Test Flight,请务必将它们添加到 iTunes connect 中。

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

【讨论】:

    【解决方案2】:

    你可以在这个github repo https://github.com/jocelynlih/SwiftGameBook/blob/master/PencilAdventure/PencilAdventure/ScoreManager.swift#L26看看这个逻辑

    要报告分数,您需要调用通过 authenticateHandler 闭包函数,如果 localPlayer 已通过身份验证,则报告分数。

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

    【讨论】:

    • 感谢您的信息,但我尝试了您的代码,但它不起作用。我试图理解 github repo 中的逻辑,但我的知识太弱了......我仍然有同样的信息:report score <GKScore: 0x7fc1bca31b30>player:playerID:g:F586362F0C610DB51DC5221012AE9D92 alias:Sophie88 rank:0 date:2014-12-05 21:58:29 +0000 value:9 formattedValue:(null) context:0x0 leaderboard:funfairBalloon group:(null)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多