以编程方式查找Game Center中现有回合制匹配的列表?

时间:2017-02-15 16:49:36

标签: ios game-center

Game Center文档说

  

如果您显示标准的配对用户界面,那么   玩家也会看到现有的比赛。

它没有解释是否有任何方式在以编程方式生成的用户界面中显示现有匹配项。

这可能吗?

2 个答案:

答案 0 :(得分:1)

没有API可以找到服务器上所有现有匹配项的列表,甚至找不到等待玩家的所有匹配项。您可以通过GameKit API执行两项相关操作:

1.使用以下内容查找符合匹配请求要求的单个匹配项:

[GKTurnBasedMatch findMatchForRequest:request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) 
{

};

2.加载玩家之前加入的所有比赛,因此已经亲自了解。

[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
 {

 }];

作为替代方案,您可以考虑使用Apple CloudKit(或任何其他后端云存储)以及Game Center来保留匹配列表。每次玩家创建新匹配时,您可以使用匹配ID和其他相关详细信息将记录保存到公共数据库,并维护您自己的所有现有会话列表。您还需要在匹配结束时删除这些记录。

答案 1 :(得分:0)

我从来没有想过如何做到这一点(虽然Thunk提供的策略似乎很好)但是如果有人试图达到相同的目标,这就是我最终做的事情。

我的最终目的是,如果两名球员大约在同一时间搜索一场比赛,我希望他们确保彼此联系,而不是让他们各自给出不同的空比赛。

我认为这样做的唯一方法就是获得公开比赛的清单,但比这更容易。

关键是搜索匹配的玩家只会连接到现有的匹配,如果这些匹配中的每个人都已经轮到他们了。游戏中心希望您能够立即一旦你连接到一场比赛,轮到你,所以它永远不会为你提供等待别人比赛的比赛。

所以我让任何获得空比赛的球员立即结束他们的轮回。这使得比赛立刻可供任何其他球员填补。

效果很好。不是所有的时间,但往往足够。

当然,在玩家联系之后,我必须理清它真正的转折,这是另一回事,但最终并不是那么困难。< / p>