重新连接玩家在游戏中心

19

我在使用Game Center的GKMatch类时遇到了问题,无法很好地重新邀请一个已经掉线的玩家。这是一个1对1的游戏。

当我检测到一个已经掉线的玩家时,我尝试使用以下调用将该特定玩家重新邀请回比赛中:

[[GKMatchmaker sharedMatchmaker] addPlayersToMatch:theMatch matchRequest:request completionHandler:^(NSError *error)
这个代码本来就是按照设计预期工作的。当另一个玩家建立连接后,他会重新加入比赛,比赛可以继续进行。但是这留下了一个问题,我一直没有办法解决。以下是情景:
- 玩家1断开连接。 - 玩家2在玩家1断开连接时离开比赛。 - 玩家1重新连接并检测到他与玩家2失去了连接,尝试重新连接到玩家2。 - 玩家2正在使用matchmakerViewController寻找新的比赛。 - 玩家2突然加入他曾经离开的旧比赛,和玩家1一起。
我的问题是,如果被重新邀请,matchmakerViewController会让玩家加入旧比赛。有没有更好的方法来处理这种重新连接的情况,以便人们不会被邀请回旧比赛?

@Cupcake。我的代码出现了这样的情况,当一个玩家断开连接时,另一个玩家也会自动断开连接。为什么会这样?如何避免玩家1的断开连接,即使玩家2已经断开连接。 - ios developer
2个回答

1

您可以为仍然连接的玩家提供重新邀请或退出的选项。如果另一个玩家离开,您还可以将匹配请求从离开的玩家中删除。


我的问题是重新邀请。玩家1在玩家2正在寻找新游戏时重新邀请了他,这是一个问题,因为玩家2将被重新邀请到他离开的游戏中。如果另一个玩家离开,我无法删除匹配请求,因为我不知道他何时离开。此时它们未连接,也无法告知玩家是否已经离开。 - ThomasCle

0
如果我检测到玩家2使用了退出功能而不是在断开连接时超时,我会继续防止玩家1在同一游戏中重新邀请。

玩家1如何知道玩家2已断开连接? - ios developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接