如何在通过游戏中心应用程序进入游戏时接收回合制比赛数据?
How to receive turnbased matchData while entering game through gamecenter app?
我正在使用 GKTurnbasedMatchMakerViewController
开始一个新的回合制游戏或检查现有的游戏,并且运行良好。但是我被困在这种情况下:
假设玩家在他的手机中打开 gamecenter 应用程序并在那里看到现有的回合制比赛。他点击比赛并点击按钮视图 turn/play 回合(取决于当前轮到谁),这将他带入我的应用程序。现在我想要的是匹配数据,就像我们从委托 didFindMatch 上的 GKTurnbasedMatchMakerViewController
获得的那样,这样我就可以向他展示适当的 UI。
目前,在阅读了大量内容后,我发现 GKLocalPlayerListner
可能就是我要找的东西。这就是我所做的。
在我的 class 扩展中添加了 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)
}
}
在我的 class.
中添加了 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 中实现我想要的吗?
请帮我解决这个问题。
从 IOS8.4 开始,我还没有找到这样做的办法。 ReceivedTurnEvent
仅在生成事件时触发。从 gameCenter 启动应用程序似乎不会生成事件。我查看了通过参数传入的参数并在环境变量中设置,但尚未找到关于在 gameCenter 应用程序中选择了哪个匹配项的任何匹配项。
相关:
Apple 已选择
remove this feature
证据来自我提交的 Apple 错误报告。
我正在使用 GKTurnbasedMatchMakerViewController
开始一个新的回合制游戏或检查现有的游戏,并且运行良好。但是我被困在这种情况下:
假设玩家在他的手机中打开 gamecenter 应用程序并在那里看到现有的回合制比赛。他点击比赛并点击按钮视图 turn/play 回合(取决于当前轮到谁),这将他带入我的应用程序。现在我想要的是匹配数据,就像我们从委托 didFindMatch 上的 GKTurnbasedMatchMakerViewController
获得的那样,这样我就可以向他展示适当的 UI。
目前,在阅读了大量内容后,我发现 GKLocalPlayerListner
可能就是我要找的东西。这就是我所做的。
在我的 class 扩展中添加了 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)
}
}
在我的 class.
中添加了 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 中实现我想要的吗? 请帮我解决这个问题。
从 IOS8.4 开始,我还没有找到这样做的办法。 ReceivedTurnEvent
仅在生成事件时触发。从 gameCenter 启动应用程序似乎不会生成事件。我查看了通过参数传入的参数并在环境变量中设置,但尚未找到关于在 gameCenter 应用程序中选择了哪个匹配项的任何匹配项。
相关:
Apple 已选择
remove this feature
证据来自我提交的 Apple 错误报告。