4

Apple 在 iOS 7 中为回合制多人游戏引入了“Exchanges”。他们提到的可能应用之一是聊天功能。所以我一直在尝试使用交易所为我的游戏实现聊天功能,但交易所似乎并不适合这个。由于 Apple 专门提到了它,我想也许我的方法是错误的。

我的方法是为每条聊天消息发送一个交换请求,并在请求中嵌入消息文本。另一个玩家收到请求,提取消息并将其保存在本地,然后回复到交换以完成它。最后,即将发送回合的玩家需要先检查是否有完成的交换并解决它们。我对这种方法的一些问题是:

  • Game Center 在回复交换请求时会发送通知。因此,如果玩家 1 向玩家 2 发送聊天消息,那么玩家 1 将在玩家 2 收到消息时收到通知。似乎没有办法禁用回复事件的通知,因此如果应用程序关闭或在后台播放器 1 将获得 Game Center 横幅。
  • 为了解决交换问题,我需要调用saveMergedMatchData:withResolvedExchanges:completionHandler:将更新的游戏数据发送到 Game Center。但在这种情况下,游戏数据保持不变,所以我不得不不必要地上传额外的数据,当玩家的互联网连接不好时,这可能会很昂贵。
  • 在解决所有开放交换之前向 Game Center 发送回合会导致错误。所以所有的交流都需要先解决。GKTurnBasedMatch 对象包含一个数组“exchanges”,其中包含所有未解决的交换,但如果其他玩家已经回复了我们的一个交换,则此数据可能已过时。因此,我需要再次下载当前比赛的 matchData 以检查未解决的交换,然后才能转弯。

有没有更好的方法来使用交易所实现聊天功能?

4

0 回答 0