【发布时间】:2016-12-13 12:37:13
【问题描述】:
在 iOS 10 上,我尝试使用 GKTurnBasedMatchmakerViewController 创建匹配。我可以调出视图,以便用户可以选择匹配或邀请。我无法弄清楚如何可靠地确定为此创建了哪个匹配项。问题是,在 iOS 10 中,GKTurnBasedMatchmakerViewControllerDelegate 的 didFindMatch 方法已被弃用。该方法曾经与比赛一起调用。过去的日子很轻松!
弃用消息显示“使用 GKTurnBasedEventListener player:receivedTurnEventForMatch:didBecomeActive”。文档和堆栈溢出线程充满了调用该方法的原因。请参阅此线程以获得良好的列表:Gamecenter ios 9 GameCenter GKLocalPlayerListener methods not called。如果你想象一个用户已经玩了几款游戏,你会发现这个方法会因为很多不同的原因被调用,据我所知,它可能随时发生。我的问题是:如何确定这些调用中的哪一个是“我刚刚为你创建了一个匹配项,就在这里!”打电话。
一些我认为行不通的例子:
- 简单地假设在您调出 GKTurnBasedMatchmakerViewController 之后发生的第一次调用 receivedTurnEventForMatch 似乎是错误的,因为 receivedTurnEventForMatch 可能会通知用户轮到他们参加另一场比赛了。除非系统保证,当视图启动时,它们只会调用与视图对应的匹配项的此方法。这似乎是一个相当大的黑客攻击,所以我假设他们不会这样做。
- 当另一个玩家处于“匹配”状态并且 didBecomeActive=true 时调用 receivedTurnEventForMatch 似乎是比赛中第一个玩家的解决方案,但不是第二个(因为两个玩家都完成了匹配)。
- 查看 MatchID 并查看我们是否“以前见过”,如果没有,假设它是刚刚创建的匹配似乎不可靠,因为用户可能已经卸载了应用程序然后重新安装,而我们已经忘记了所有关于我们“以前见过”的匹配。
我被困住了,感谢任何帮助。
【问题讨论】:
标签: iphone game-center gkturnbasedmatch