Как сообщить рекорд в игровом центре с быстрым
Я пытаюсь сообщить свой рекорд в игровом центре. Я думаю, что мой код работает, но игровой центр не обновляется с рекордом. Таблица лидеров создается с таким ссылочным именем: "funfairBalloon" и этим номером таблицы лидеров: 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()
})
}
}
}
}
У тебя есть идея?
2 ответа
Рекомендуется добавлять идентификатор приложения в идентификатор списка лидеров. У меня были проблемы с тем, чтобы заставить его работать до этого. У вас могут быть такие же проблемы. Создайте список лидеров тестирования с именем "com.whwhatName.55009943" и обновите свой код. Посмотрим, будет ли это работать так, как для меня.
Если вы используете тестовый полет для своих тестеров в песочнице, обязательно добавьте их в iTunes connect.
Наконец, эта ссылка должна помочь вам выяснить, почему вы не видите, чтобы кто-то появлялся в списке лидеров, если вы следовали приведенному выше совету.
Вы можете взглянуть на эту логику в этом репозитории github https://github.com/jocelynlih/SwiftGameBook/blob/master/PencilAdventure/PencilAdventure/ScoreManager.swift
Чтобы сообщить о балле, вам необходимо вызвать функцию аутентификации Handler и, если 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
}
}
}