通过网络发送UITouches

时间:2010-08-29 16:53:28

标签: iphone ipad ios uitouch

我正在构建一个允许用户在屏幕上绘图的应用程序。我想添加网络功能,以便用户A可以在用户B的屏幕上绘图。我目前的计划是建立一个系统,我有自己的UserOrNetworkTouch对象,可以基于真正的UITouch或来自网络的消息创建,并基于UserOrNetworkTouch事件的应用程序中的所有绘图,而不是比UITouch事件。

我想要使用此系统的另一件事是录制触摸,因此用户可以按“录制”,然后在以后播放他们的绘图。

我想确保我不是在这里重新发明轮子。是否有可用的库可以为我处理部分或全部内容?

2 个答案:

答案 0 :(得分:3)

您可能不会通过网络发送UITouch个对象(尽管如果您愿意,也可以)。我可能打包然后将位置触摸到某种类型的结构中,然后发送它以减少您发送的流量。如果您需要整个UITouch对象及其所有数据,请将对象发送到您的服务器。

您可以使用CFNetwork框架从客户端应用程序向服务器发送数据。如果你这样做,你应该尝试使用IPv6。

Apple在此处提供了使用CFNetwork streams

的示例代码

如果您想录制触摸事件,只需使用NSArrayNSDictionary,如果您想存储说触摸以及触摸发生时的时间戳。

然后只需在用户制作时将每个触摸添加到数组或字典中。

更新:我不会浪费你的时间使用Apple的WiTap示例代码。我以前读过它并且其中有很多代码,如果你想要一个简单的客户端/服务器应用程序并且快速运行,这只是令人困惑和无关紧要。如果您之前没有进行任何网络编程,那么对您来说很可能会让您感到困惑。

我会先让网络传输工作,如果您愿意,可以参考WiTap获取Bonjour网络部分,这样您就可以自动发现客户端和服务器。但只有在数据流首先工作后才能添加Bonjour支持。

答案 1 :(得分:0)

一个好的起点是Apple的WiTap sample。它建立了一个超过Bonjour的游戏并来回发送。>

另外看一下GameKit会让一些网络变得更简单。

SQLite DB是记录事件的好地方。搜索'fmdb'SQLite包装器以获得一个很好的Objective-C包装器。