我正在使用GKTurnbasedMatchMakerViewController
开始一个新的基于回合的游戏或检查现有的游戏,这样做非常好。但是我遇到了这种情况:
假设pleayer在他的手机中打开游戏中心应用程序,并在那里看到现有的基于转折的匹配。他点击了比赛并点击按钮视图转弯/转弯(取决于当前的转弯),这将他带入我的应用程序。现在我想要的是匹配数据,就像我们在委托didFindMatch上从GKTurnbasedMatchMakerViewController
获得的那样,这样我就可以向他展示适当的UI。
目前在阅读了很多内容之后,我发现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中实现我想要的? 请帮我解决这个问题。
答案 0 :(得分:1)
从IOS8.4开始,我还没有找到这样做。 ReceivedTurnEvent
仅在生成事件时触发。从gameCenter启动应用程序似乎不会生成事件。我查看了通过参数传递的参数并在环境变量中设置,并且还没有找到关于在gameCenter App中选择了哪个匹配的任何命中。
相关:Handle Selected Turns/Games in iOS Game Center App in Game Center Enabled App
答案 1 :(得分:0)