iOS游戏工具包回合匹配程序重新匹配

我有一个使用游戏中心和GKTurnbasedMatch的2人游戏,iOS回合制游戏。

有没有一种方法可以在比赛结束后以编程方式重新匹配对手?

我想给玩家一键访问,开始一场新的比赛。

如果没有一个button的方法,有什么潜在的select?

事实上,Game Center似乎忽略了一个完整的程序化解决scheme。 毫无疑问,这是一种痛苦。 尝试在您的@select器(doRematchTap)…或一些等效的以下内容:

NSMutableArray *playerIds = [NSMutableArray array]; GKTurnBasedParticipant *otherPlayer = /* Get the other player some way */; GKTurnBasedParticipant *myParticipant = /* Get yourself a very similar way*/; [playerIds addObject:myParticipant.playerID]; if (otherPlayer.playerID) { [playerIds addObject:otherPlayer.playerID]; }// sanity check GKMatchRequest *request = [[GKMatchRequest alloc] init]; request.playersToInvite = playerIds; request.minPlayers = 2; request.maxPlayers = 2; GKTurnBasedMatchmakerViewController *tbmcv = [[GKTurnBasedMatchmakerViewController alloc] initWithMatchRequest:request]; tbmcv.showExistingMatches = NO; tbmcv.turnBasedMatchmakerDelegate = /* Your normal delegate for the callbacks */; [self presentViewController:tbmcv animated:YES completion:^{ }]; 

重要的是要注意showExistingMatches = NO,它会将视图控制器正确地跳转到匹配模式,并且预先select了正确的用户(看来),而不显示用户现有的匹配。

我没有完整的解决scheme,但对你来说是一个想法:

每个玩家都有一个独特的玩家ID,如果在玩家之后将其存储,则可以获得

didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID

现在,您可以以编程方式启动新的比赛并邀请该球员。 他会问他是否想要复赛,然后你可以再打。

我知道这不是太多的代码或具体的build议,但也许有足够的信息findGameKit类参考中的其余部分。

我想知道你能不能解决问题,告诉我,如果你做到了,祝你好运!

编辑:

我已经在参考文献中search,发现这个:

 - (void) loadPlayerData: (NSArray *) identifiers 

我没有自己尝试过,但是如果你将他的标识符存储在一个数组中,并把它传递给这个函数,你就应该再次使用这个方法。

我希望他们为Game Center带来iOS6的一些改变,你可以用你自己的方式编程