有没有办法在GKTurnBasedMatch中更新matchData而不发送“你的转弯”推送通知?

时间:2012-03-18 16:51:14

标签: ios game-center gamekit

如果我的理解是正确的,更新GKTurnBasedMatch中间转弯的matchData属性的唯一方法是[_ currentMatch endTurnWithNextParticipant:_currentParticipant matchData:matchData completionHandler:nil]。

如果游戏中心播放器仅在一台设备上安装了游戏,则效果很好,因为该通知是作为消息发送到设备的。因此,当用户当前正在播放时,可以隐藏通知。但是,如果用户将游戏安装在多个设备上,则其他设备将获得“轮到你”推送通知。这让用户感到困惑,特别是我多次更新matchData。

顺便说一句,我知道我可能没有使用endTurnWithNextParticipant:matchData:completionHandler:function(因为我不是,实际上是结束匹配......但只是更新matchData)。但是,似乎没有办法在赛道中更新比赛的状态。

3 个答案:

答案 0 :(得分:2)

iOS 6中添加了转弯中途保存:

-[GKTurnBasedMatch saveCurrentTurnWithMatchData:completionHandler:]

来源:GKTurnBasedMatch Class Reference

答案 1 :(得分:1)

有趣的是,为了解决您的原始问题, saveCurrentTurnWithMatchData 仍然向其他玩家发送推送通知,即使当前玩家还没有结束!

在我看来,这似乎是一个GameKit的设计缺陷 - 当一个对手的应用程序图标尚未轮到它时,它似乎具有误导性。打开它真是太可惜,看到它只是一遍又一遍的误报!

如果有人在调用 saveCurrentTurnWithMatchData 时找到了抑制这些推送通知的方法,我很想知道你是怎么做到的。

更新:我开始new thread来解决此问题。

答案 2 :(得分:-1)

在回合中,应该没有理由更新匹配数据。其他玩家都无法在轮到他们之前做出反应,所以数据只需要作为从一个玩家到另一个玩家的游戏过渡传递。