我正在通过游戏中心开展多人游戏,我遇到了一个问题。当我试图邀请我的一个朋友时,我失败了。我尝试过使用模拟器和iphone以及两部iphone并且总是遇到同样的问题。
我搜索了我的问题的解决方案,发现有很多开发人员遇到这个问题。我使用的是iOS 6,应用程序仍在生产中,因此它位于沙盒中。
我在Ray Wenderlich教程中使用相同的代码 - CatRace(也有人写过这个问题,但是没有人发布解决方案。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
您必须发送 GK 事件以表示玩家(您)结束了他们的回合,然后 GameCenter 才会向您邀请的玩家发送推送通知邀请。
所以每个玩家的第一轮事件应该发送一个类似 [“Player1”:“Joined”] 的 matchData 数组
这将强制 GameCenter 向每个玩家发送邀请。
然后一旦您确认每个玩家都发送了“Joined”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 是一个 NSArray,如 [“Joined”] 使用 NSKeyArchiver。调用此函数后,GameCenter 会发送推送通知邀请玩家。