如何通过gamecenter app进入游戏时接收基于turnbased的matchData?

时间:2015-07-18 11:37:07

标签: ios swift game-center gkturnbasedmatch

我正在使用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中实现我想要的? 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

从IOS8.4开始,我还没有找到这样做。 ReceivedTurnEvent仅在生成事件时触发。从gameCenter启动应用程序似乎不会生成事件。我查看了通过参数传递的参数并在环境变量中设置,并且还没有找到关于在gameCenter App中选择了哪个匹配的任何命中。

相关:Handle Selected Turns/Games in iOS Game Center App in Game Center Enabled App

答案 1 :(得分:0)

Apple选择了

  

删除此功能

我提交的Apple错误报告的证明。

Apple bug report