【问题标题】:Send UITouches over a network通过网络发送 UITouch
【发布时间】:2011-04-05 11:17:49
【问题描述】:

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

我想要使用这个系统的另一件事是记录触摸,因此用户将能够按下“记录”,然后在稍后播放他们的绘图。

我想确保我没有在这里重新发明轮子。是否有任何可用的库可以为我处理部分或全部这些问题?

【问题讨论】:

    标签: iphone ipad ios uitouch


    【解决方案1】:

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

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

    Apple 在此处提供使用 CFNetwork streams 的示例代码

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

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

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

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

    【讨论】:

    • Bonjour 并不难,你可以跳过 CFNetwork 直接使用 NSStreams。 WiTap 的代码主要是 Bonjour,并提供了一个表格视图,显示了满足您应用程序需求的设备。 Apple 有另一个出色的示例,刚刚更新,“PictureSharing”。虽然它是基于 Mac 的,但代码在 iPhone 上运行得很好。它使用 Bonjour 进行连接,并有一些有用的运行循环/NSOperation 类;在他们的情况下发送文件,但您可以使用它们发送任何内容。
    【解决方案2】:

    Apple 的WiTap sample 是一个不错的起点。它通过 Bonjour 设置游戏并来回发送点击。

    还可以看看 GameKit,它会让一些网络变得更加简单。

    SQLite DB 是记录事件的好地方。搜索“fmdb”SQLite 包装器,寻找一个不错的 Objective-C 包装器。

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      相关资源
      最近更新 更多