【问题标题】:How to receive turnbased matchData while entering game through gamecenter app?通过游戏中心应用程序进入游戏时如何接收回合制比赛数据?
【发布时间】:2016-04-30 12:37:09
【问题描述】:

我正在使用GKTurnbasedMatchMakerViewController 开始一个新的回合制游戏或检查现有的游戏,并且运行良好。但是我被困在这种情况下: 假设玩家在他的手机中打开游戏中心应用程序并在那里看到现有的回合制比赛。他单击比赛并单击按钮视图轮/播放轮(取决于当前轮到谁),这将他带入我的应用程序。现在我想要的是像我们从委托 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 中实现我想要的吗? 请帮我解决这个问题。

【问题讨论】:

    标签: ios swift game-center gkturnbasedmatch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      苹果选择了

      删除此功能

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-05
        相关资源
        最近更新 更多