Настоящий игровой центр сноваIOS

Программируем под IOS
Ответить
Anonymous
 Настоящий игровой центр снова

Сообщение Anonymous »

Я сталкиваюсь здесь на небольшую проблему, и я надеюсь, что кто -то поможет мне выяснить, что случилось. Точнее, повторно представьте его, если он отменил его в первый раз. : < /p>
class GameNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("showAuthenticationViewController"), name: PresentAuthenticationViewController, object: nil)

GameKitHelper.sharedInstance.authenticateLocalPlayer()
}

func showAuthenticationViewController() {
let gameKitHelper = GameKitHelper.sharedInstance

if let authenticationViewController = gameKitHelper.authenticationViewController {
self.topViewController.presentViewController(authenticationViewController, animated: true, completion: nil)
}
}

deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
}
< /code>
menuviewcontroller: < /p>
class MenuViewController: UIViewController {
@IBAction func didTapLeaderboardBTN() {
// TRY 2
//if ( !GameKitHelper.sharedInstance.gameCenterEnabled) {
GameKitHelper.sharedInstance.authenticateLocalPlayer()
//} else {
GameKitHelper.sharedInstance.showGKGameCenterViewController(self)
//}
}
}
< /code>
GameKithelper: < /p>
import GameKit
import Foundation

let PresentAuthenticationViewController = "PresentAuthenticationViewController"

let singleton = GameKitHelper()

class GameKitHelper: NSObject, GKGameCenterControllerDelegate {

var authenticationViewController: UIViewController?
var lastError: NSError?
var gameCenterEnabled: Bool

class var sharedInstance: GameKitHelper {
return singleton
}

override init() {
gameCenterEnabled = true
super.init()
}

func authenticateLocalPlayer () {

let localPlayer = GKLocalPlayer.localPlayer()
localPlayer.authenticateHandler = { (viewController, error) in

self.lastError = error

if viewController != nil {
self.authenticationViewController = viewController
NSNotificationCenter.defaultCenter().postNotificationName(PresentAuthenticationViewController, object: self)
} else if localPlayer.authenticated {
self.gameCenterEnabled = true
} else {
self.gameCenterEnabled = false
}
}
}

func showGKGameCenterViewController(viewController: UIViewController!) {

if ( !self.gameCenterEnabled ) {
println("Local player is not authenticated")

// TRY 1
//self.authenticateLocalPlayer()

return
}

let gameCenterViewController = GKGameCenterViewController()

gameCenterViewController.gameCenterDelegate = self

gameCenterViewController.viewState = .Leaderboards

viewController.presentViewController(gameCenterViewController, animated: true, completion: nil)
}

func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!) {
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}
}
< /code>
Что в настоящее время работает: < /p>

[*] Если пользователь ранее регистрируется (в приложении Gamecenter), то он смог открыть представление о списке лидеров; < /li>
, если пользователь не был зарегистрирован, тогда он поднял вход в систему, когда контроллер Game Navigation < /ul>
Что в настоящее время не работает: < /p>

Если он трижды отменит аутентификацию, то аутентификация больше не будет появляться (даже при запуске); // По-видимому, известная «проблема», а не «исправляем»
Если пользователь отменяет его аутентификацию, когда он пытается загрузить таблицу лидеров, аутентификация больше не появится. Я не могу сделать представление аутентификации снова.>

Подробнее здесь: https://stackoverflow.com/questions/313 ... onvc-again
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»