游戏中心沙盒模式下缺失邀请信息

4
我在使用Game Center时遇到了奇怪的问题。我正在使用GKTurnBasedMatch和相关类来设置回合制比赛。本地玩家的身份验证完全正常。使用GKTurnBasedMatch类方法loadMatchesWithCompletionHandler:似乎返回了合理的GKTurnBasedMatch对象。为了向Game Center好友发起新比赛和邀请,我使用标准的GKTurnBasedMatchmakerViewController。
当我使用GKTurnBasedMatchmakerViewController创建比赛时,只要showExistingMatches属性为YES,则对于游戏创建者来说,在GKTurnBasedMatchmakerViewController中就会显示这些比赛。
但是,如果我使用GKTurnBasedMatchmakerViewController邀请另一个玩家,接收方玩家将永远不会收到邀请。没有Game Center推送通知,也没有(除了一两次,而且零星出现)在GKTurnBasedMatchmakerViewController中显示“已邀请”的比赛。
奇怪的是,如果初始用户结束他们通过邀请创建的游戏,那么该玩家将会收到“游戏结束”Game Center通知。
使用loadMatchesWithCompletionHandler:对于邀请玩家来说,返回的matches对于邀请玩家是没有意义的(参与者上的正确playerID值,participant上的正确GKTurnBasedParticipantStatus),而邀请玩家根本不会看到任何东西。
我使用两个独立设备,两个设备都明确登录到Game Center的沙盒模式,并且在iTunes Connect等方面进行了一切设置。两个Game Center账户都设置为接受邀请。
有人见过这样的情况吗?

你是否订阅了 GKTurnBasedEventHandlerDelegate?我不确定那是否是你的问题,因为我认为该委托消息是从GameCenter应用程序本身启动的。这只是另一个需要注意的边缘情况。 - livingtech
好的建议。我的问题在于处理任何东西之前就已经存在了。来自Game Center的推送通知本身并没有显示出来,这是奇怪的部分。我认为我已经解决了这个问题(请参见答案)。现在需要做的工作是确保当它们到来时,它们能够通过GKTurnBasedEventHandlerDelegate和其他方式得到适当的处理。 - Tim Arnold
1个回答

2
可能的解决方案:当邀请者进行第一步时,发送消息endTurnWithNextParticipants:turnTimeout:matchData:completionHandler:时,我没有在第一个参数中发送正确的参与者,因此回合从未设置为被邀请者的回合。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接