3

我正在通过游戏中心开发一款多人游戏,但遇到了一个问题。当我尝试邀请我的一位朋友时,我得到了失败的状态。我尝试过使用模拟器和 iphone 以及两部 iphone,但总是出现同样的问题。

我已经为我的问题搜索了一个解决方案,发现有很多开发人员遇到了这个问题。我正在使用 iOS 6,应用程序仍在生产中,所以它在沙盒中。

我正在使用与 Ray Wenderlich 教程 - CatRace 相同的代码(有太多人写过这个问题,但没有人发布解决方案。

有谁知道如何解决这个问题?

4

2 回答 2

7

请检查:

1> 您在本地播放器通过身份验证后设置邀请处理程序。
2> 您尝试邀请的玩家确实在其帐户设置中允许游戏邀请。如果您有两个测试帐户,您可能会忘记您不允许他们两个测试帐户。在这种情况下,邀请的推送通知甚至不会发送给其他玩家。
3> 请勿使用同一个游戏中心账号进行测试。

于 2013-01-18T12:51:01.153 回答
0

您必须发送 GK 事件来表示玩家(您)结束了他们的回合,然后 GameCenter 才会向您邀请的玩家发送推送通知邀请。

所以每个玩家的第一轮事件应该发送一个 matchData 数组,比如 [“Player1” : “Joined”]

这将迫使 GameCenter 向每个玩家发送邀请。

然后,一旦您确认每个玩家都发送了“加入”GK 事件,您就开始游戏。

https://developer.apple.com/documentation/gamekit/gkturnbasedmatch/1520765-endturn

func endTurn(withNextParticipants nextParticipants: [GKTurnBasedParticipant], 
 turnTimeout timeout: TimeInterval, 
       match matchData: Data, 
completionHandler: ((Error?) -> Void)? = nil)

nextParticipants 是被邀请的玩家,matchData 是一个类似 [“Joined”] 的 NSArray,使用 NSKeyArchiver。调用此函数后,GameCenter 将发送推送通知来邀请玩家。

于 2021-03-25T01:29:50.267 回答