收到并处理了游戏中心邀请但匹配未启动

时间:2014-04-02 19:10:26

标签: ios game-center gkmatchmaker

我遇到了我的游戏中心代码并且已经进行了研究和研究,并且正在使用似乎是公认的标准方法。我无法看出问题出在哪里。

我正在写一个四人牌纸牌游戏,如果任何玩家退出,我希望他们被邀请回到游戏中。

场景是这样的: 比赛正在进行,所有球员都在比赛中。一名玩家退出游戏。指定的主机检测到断开连接,并使用addPlayersToMatch向退出发送邀请。 dropout的inviteHandler已经设置在开始时,它会触发。 dropout获取邀请并调用似乎是标准代码:

GKMatchmakerViewController *mmvc
mmvc = [[GKMatchmakerViewController alloc] initWithInvite:_pendingInvite];
mmvc.matchmakerDelegate = self;
[_presentingViewController presentViewController:mmvc animated:YES completion:nil];

在退出计算机上,MatchMakerViewController正好出现,它只显示已经在比赛中的玩家,并且很快就会标记为" Ready"。然而,控制器显示消息"等待游戏开始......",didFindMatch永远不会被解雇。没有用于启动游戏的UI(唯一的按钮是左上角的取消)。

奇怪的是在主机inviteeResponseHandler上发生了火,所以看起来主机收到了丢失回来的消息。我在这里打电话给finishMatchmakingForMatch,但它似乎没有做任何事情。

那么如何告诉我的辍学者解雇MatchMakerViewController?

撕掉我的头发!

1 个答案:

答案 0 :(得分:0)

您是否正在处理matchmaker委托中的did find match方法?

(注意我的代码是swift)但您可以轻松地将其移植到obj c

//已找到点对点匹配,游戏应该开始

public func matchmakerViewController(viewController:  GKMatchmakerViewController!, didFindMatch match: GKMatch!)
{
    println("didFindMatch");
    if (!_matchStarted && match.expectedPlayerCount == 0) {
        match.delegate = self;
        mmvc.dismissViewControllerAnimated(true,completion:completedBlock);
    }

}