我的 Game Center 代码遇到了障碍,并且进行了研究和研究,并且正在使用似乎是公认的标准方法。我只是看不出哪里出了问题。
我正在编写一个四人纸牌游戏,如果有任何玩家退出,我希望他们能被邀请回到游戏中。
场景是这样的:一场比赛正在进行中,所有球员都在比赛中。一名玩家退出游戏。指定主机检测到断开连接,并使用 向 dropout 发送邀请addPlayersToMatch
。dropout的inviteHandler已在开始时设置,并触发。辍学者收到邀请并调用似乎是标准代码的代码:
GKMatchmakerViewController *mmvc
mmvc = [[GKMatchmakerViewController alloc] initWithInvite:_pendingInvite];
mmvc.matchmakerDelegate = self;
[_presentingViewController presentViewController:mmvc animated:YES completion:nil];
在 dropout 机器上,MatchMakerViewController 适时出现,它只显示已经在比赛中的球员,他们很快就会被标记为“Ready”。然而,控制器显示消息“等待游戏开始...”,并且didFindMatch
从未被触发。没有启动游戏的 UI(唯一的按钮是左上角的取消)。
奇怪的是主机上的机器inviteeResponseHandler
确实触发了,所以主机似乎收到了辍学回来的消息。我在finishMatchmakingForMatch
这里打电话,但它似乎没有做任何事情。
那么我如何告诉我的辍学者解雇 MatchMakerViewController?
扯掉我的头发!