2010-08-29 108 views
2

我正在构建一个允许用户在屏幕上绘制的应用程序。我想添加网络功能,以便用户A可以使用用户B的屏幕。我目前的计划是建立一个系统,在该系统中我有自己的UserOrNetworkTouch对象,该对象可以基于真实的UITouch或通过网络传递的消息创建,并且可以将应用程序中的所有绘图基于UserOrNetworkTouch事件创建比UITouch事件。通过网络发送UITouches

我希望使用此系统的另一件事是录制触摸,因此用户将能够按下“录制”,然后在以后播放他们的绘图。

我想确保我不会在这里重新发明轮子。有没有任何图书馆可以处理一些或所有这些对我来说?

回答

3

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

您可以使用CFNetwork框架将数据从客户端应用程序发送到服务器。如果你确实应该尝试使用IPv6。

苹果有示例代码这里与CFNetwork的streams

工作。如果你想记录的触摸事件,只需使用一个NSArrayNSDictionary如果你想储存说与时间戳一起摸上去当触摸发生。

然后只要将每个触摸添加到数组或字典中,就像用户创建它们一样。

更新:我不会浪费您的时间与Apple的WiTap示例代码。我已经阅读过,而且它里面有很多代码,如果你想让一个简单的客户端/服务器应用程序快速启动并运行,这只是令人困惑和无关的。如果你以前没有做过任何网络编程,那么对你而言,这可能会让你感到非常困惑。

我会先让网络传输工作,然后如果您喜欢,您可以参考Bonjour网络部分的WiTap,以便您可以自动发现客户端和服务器。但是只有在数据流首先工作后才能添加Bonjour支持。

+0

Bonjour不难,你可以跳过CFNetwork并直接使用NSStreams。 WiTap的代码主要是Bonjour,并提供了一个表格视图,展示了满足您的应用需求的设备。 苹果有另一个优秀的样本,只是更新,'PictureSharing'。虽然它是基于Mac的,但代码在iPhone上运行得很好。它使用Bonjour进行连接,并有一些有用的运行循环/ NSOperation类;在他们的情况下发送文件,但你可以使用它们发送任何东西。 – 2010-08-30 02:18:43

0

苹果公司的WiTap sample是一个好地方。它在Bonjour上设置了一个游戏并且来回发送水龙头。

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

SQLite数据库将是一个记录事件的好地方。搜索一个漂亮的Objective-C包装器的'fmdb'SQLite包装器。