I am using GKTurnbasedMatchMakerViewController
to start a new turnbased game or check the existing ones and that is working perfectly fine. However I am stuck at this case scenario:
Suppose pleayer opens the gamecenter app in his mobile and sees an existing turnbased match there. He clicks on the match and clicks the the button view turn/play turn(depending upon whose turn it is currently) which brings him into my app. Now what I want is the match data like we get from GKTurnbasedMatchMakerViewController
on delegate didFindMatch so that I can show him the appropriate UI.
Currently after reading a lot I found GKLocalPlayerListner
might be what I am looking for. So here is what I did.
Added GKLocalPlayerListner in my class extensions.
registred listener for local player while authenticating the user.
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)
}
}
Added GKLocalPlayerListener delegate methods in my class.
// 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")
}
But I am not able to get any of these while entering the game from gamecenter app.
So first of all does GKLocalPlayerListener even do what I am trying to achieve? If not is it even possible in iOS to achieve what I want? Please help me through this.