Как сообщить рекорд в игровом центре с быстрым

Я пытаюсь сообщить свой рекорд в игровом центре. Я думаю, что мой код работает, но игровой центр не обновляется с рекордом. Таблица лидеров создается с таким ссылочным именем: "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 } } }

Другие вопросы по тегам