如何用swift在游戏中心报告高分
Posted
技术标签:
【中文标题】如何用swift在游戏中心报告高分【英文标题】:how report highscore in Game center with 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
但是我在游戏中心的沙盒测试器中看不到其他玩家是否正常?
【参考方案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)
以上是关于如何用swift在游戏中心报告高分的主要内容,如果未能解决你的问题,请参考以下文章