Я использую GKTurnbasedMatchMakerViewController
, чтобы начать новую игру с разворотом или проверить существующие, и это работает отлично. Однако я застрял в этом сценарии: Предположим, что pleayer открывает приложение gamecenter в своем мобильном устройстве и видит, что там есть действующий подиум. Он нажимает на матч и нажимает кнопку поворота/поворота на кнопку (в зависимости от того, в чей ход он сейчас), который приводит его в мое приложение. Теперь то, что я хочу, это данные сопоставления, как мы получаем от GKTurnbasedMatchMakerViewController
на делегате didFindMatch, чтобы я мог показать ему соответствующий пользовательский интерфейс.Как получить matchdata matchbased, входя в игру через приложение gamecenter?
В настоящее время после прочтения много я нашел GKLocalPlayerListner
может быть то, что я ищу. Итак, вот что я сделал.
Добавлен GKLocalPlayerListner в расширениях моего класса.
Зарегистрированный слушатель для локального игрока во время аутентификации пользователя.
func authenticateLocalUser() {
println("Authenticating local user...")
if GKLocalPlayer.localPlayer().authenticated == false {
GKLocalPlayer.localPlayer().authenticateHandler = { (view, error) in
if error == nil {
println("authentication")
self.authenticated = true
GKLocalPlayer.localPlayer().registerListener(self)
} else {
println("\(error.localizedDescription)")
}
}
} else {
println("Already authenticated")
// GKLocalPlayer.localPlayer().registerListener(self)
}
}
Добавлены методы делегата GKLocalPlayerListener в моем классе.
// MARK: GKLocalPlayerListener
func player(player: GKPlayer!, didAcceptInvite inviteToAccept: GKInvite!) {
println("turnbased: didAcceptInvite")
let mmvc = GKMatchmakerViewController(invite: inviteToAccept)
mmvc.matchmakerDelegate = self
presentingViewController.presentViewController(mmvc, animated: true, completion: nil)
}
func player(player: GKPlayer!, didRequestMatchWithOtherPlayers playersToInvite: [AnyObject]!) {
println("turnbased: didRequestMatchWithOtherPlayers")
}
func player(player: GKPlayer!, receivedTurnEventForMatch match: GKTurnBasedMatch!, didBecomeActive: Bool) {
println("turnbased: received turnbased match with didBecomeActive = \(didBecomeActive) and match = \(match.description)")
}
func player(player: GKPlayer!, didReceiveChallenge challenge: GKChallenge!) {
println("turnbased: Challenge received")
}
Но я не могу получить ни одного из них при входе в игру из приложения gamecenter.
Так что, в первую очередь, GKLocalPlayerListener даже делает то, что я пытаюсь достичь? Если это не возможно в iOS для достижения того, чего я хочу? Пожалуйста, помогите мне в этом.