回合制配对在iOS 10中不起作用

我的游戏在iOS 10之前运行良好。现在,iOS 10的每个人都无法邀请和玩他们想要的人。

当用户说他们想玩多人游戏时,我会创建一个GKMatchRequest如下所示:

 GKMatchRequest *request = [[GKMatchRequest alloc] init]; request.minPlayers = 2; request.maxPlayers = 4; request.defaultNumberOfPlayers = 2; 

我使用GKTurnBasedMatchmakerViewController来处理邀请等。用户看到一个界面,让他们改变比赛中的球员数量并邀请球员。 让我们说他们只想要2名球员,所以他们离开了,他们想和他们的朋友一起玩。 因此,他们使用界面向他们的朋友发送邀请。 结果是,在我的委托上调用了GKMatch ,其中GKMatch有4个参与者。 它应该只有2! 第一个参与者是本地玩家,另外3个具有“匹配”状态。 所以,他们的朋友甚至不在列表中。 有没有人有任何解决这个问题的建议? 这个相同的代码在iOS 10之前的iOS版本中运行良好。

看来,对于IOS10,defaultNumberOfPlayers没有被尊重。

请记住, GKTurnBasedMatch在给定的匹配中有三种类型的玩家:

  • 创建匹配的创始人
  • 被特别邀请参加比赛的球员
  • 自动匹配的玩家

如果您查看比赛中所有4名球员的球员状态(使用您的示例),我怀疑您会看到以下结果

  1. 活跃(发起者)
  2. 邀请(你邀请的1个人)
  3. 匹配
  4. 匹配

如果是这样,则表示忽略了defaultNumberOfPlayers ,并且最多创建了4个玩家(1个发起者,1个被邀请者和2个自动匹配插槽)。

解决方法似乎是在创建匹配时将maxNumberOfPlayers设置为所需的上限,在本例中为2。