2014-12-04 62 views
6

我想我的报告中高分游戏中心报告的高分。我认为我的代码正在工作,但游戏中心并没有更新高分。 排行榜与此引用名创建“funfairBalloon”与此排行榜ID:55009943. 我有3次沙箱测试,游戏中心启用和玩家在游戏中心认证。如何在游戏中心与SWIFT

和我的代码来验证和报告是:

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

你有一个想法?

+1

最好的做法是将您的应用程序ID添加到排行榜标识符。在那之前我没有得到它的工作。你可能会遇到同样的麻烦。制作一个名为“com.whateverName.55009943”的测试排行榜并更新您的代码。看看它是否像我这样做。 – Scott 2014-12-06 23:10:27

+0

我在iTunes连接上做了一个名为“com.whateverName.55009943”的排行榜,并更新了'leaderboardIdentifier:“com.whateverName.55009943”'但stil在游戏中心没有得分和没有玩家。 qmzdcjselrbhvslkvhblqziehbflshbv AAAAAHHHHHHHHH我去crazyyyyyyyy – Haox 2014-12-06 23:19:49

+0

YAHOUUUUUU!感谢你,我发现我的错误!我的排行榜没有设置好!我爱你 !!!!自3天以来看起来! – Haox 2014-12-06 23:29:48

回答

3

这是给你的应用程序ID添加到排行榜标识的最佳实践。在那之前我没有得到它的工作。你可能会遇到同样的麻烦。制作一个名为“com.whateverName.55009943”的测试排行榜并更新您的代码。看看它是否像我这样做。

如果您使用的飞行测试你的沙盒测试人员务必将其添加在iTunes Connect中也是如此。

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

0

你可以看看这个逻辑在这个GitHub库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 } } }

+0

感谢您的留言,但我尝试了您的代码,但无效。我试图了解在GitHub库的逻辑,但我的知识太弱......我仍然有相同的消息:'报告评分播放器:playerID:G:F586362F0C610DB51DC5221012AE9D92别名:Sophie88排名:0日期时间:2014年-12-05 21:58:29 +0000 value:9 formattedValue:(null)context:0x0排行榜:funfairBalloon组:(null)' – Haox 2014-12-05 22:02:35